The body block of try contains statements in which an exception may occur. The body block is always followed by a catch block in which the exception that has occurred is captured.

1 <exception> Statements

Provides access to documentation of the function.

2 <try-catch> Block

The body block of try contains the statements in which an exception may occur. The body block is always followed by a catch block, in which the exception that has occurred is captured. Exception control is used to manage errors produced, allowing the program to keep running after an exception occurs.

<try>
    <body /> +
    <catch /> +
</try>
Example
Copy
<xsql-script name='sample_error_isSQL'>
    <body>

        <try>
            <body>
                <!-- In this case, a controlled error of overlapping dates occurs. -->
                <update table='ctipoimp'>
                    <column name='fecini'><date.mdy m='7' d='1' y='2010' /></column>
                    <where>codimp = 'NOR' and fecfin = <mdy m='12' d='31' y='3000' /></where>
                </update>
            </body>
            <catch>
                <println>is SQL error? <error.isSQL/></println>
            </catch>
        </try>

    </body>
</xsql-script>

2.1 <error>

2.1.1 error.isSQL

<error.isSQL />
Example
Copy
<xsql-script name='sample_error_isSQL'>
    <body>

        <try>
            <body>
                <!-- In this case, a controlled error of overlapping dates has occurred. -->
                <update table='ctipoimp'>
                    <column name='fecini'><date.mdy m='7' d='1' y='2010' /></column>
                    <where>codimp = 'NOR' and fecfin = <mdy m='12' d='31' y='3000' /></where>
                </update>
            </body>
            <catch>
                <println>is SQL error? <error.isSQL/></println>
            </catch>
        </try>

    </body>
</xsql-script>
Example

Code for testing in various database managers.

Copy
<xsql-script name='test_issql'>
    <body>
        <!-- =========================================================== -->
        <!-- Test error.isSQL =                                          -->
        <!--     true  : Any constraint error.                           -->
        <!--     true  : Any database error, i.e.: *while cursor open*   -->
        <!--     false : User XSQL exception.                            -->
        <!--     false : Triggers custom exception with sdm_raise_msg    -->
        <!--                                                             -->
        <!-- Determines if error was caused by an SQL operation.         -->
        <!--                                                             -->
        <!--                                                             -->
        <!-- Allows massive transactional processes,                     -->
        <!-- where individual transactions are made per document,        -->
        <!-- to force the unconditional stopping of the process          -->
        <!-- and display the SQL error message.                          -->
        <!--                                                             -->
        <!-- Usually used at the end of a catch block.                   -->
        <!--                                                             -->
        <!-- =========================================================== -->
        <!-- ==================================================== -->
        <!-- Error: user exception from XSQL Script.              -->
        <!-- The error must be false.                             -->
        <!-- ==================================================== -->
        <try>
            <body>
                <exception>XSQL Exception Error</exception>
            </body>
            <catch>
                <set name='m_resp'><error.isSQL/></set>
                <println>XSQL exception error must be false: [<m_resp/>]  error.message: [<error.message/>]</println>
            </catch>
        </try>
        <!-- ==================================================== -->
        <!-- Error: Check constraint.                             -->
        <!-- Other errors :                                       -->
        <!--    Not enough space in chunk                         -->
        <!--    *while cursor open*                               -->
        <!-- The error must be true.                              -->
        <!-- ==================================================== -->
        <try>
            <body>
                <!-- ==================================================== -->
                <!-- TRY-BODY-START                                       -->
                <!-- Need for postgresql :                                -->
                <!-- ==================================================== -->
                <if>
                    <expr>
                        <not><connection.isOnTransaction/></not>
                    </expr>
                    <then>
                        <connection.begin/>
                    </then>
                </if>
                <connection.savepoint/>
                <!-- Force error : 530: Check constraint (informix.c_ccuentas1) failed. -->
                <update table='ccuentas'>
                    <column name='tipcta'>x</column>
                    <where>
                        placon = 'ES' and (code IN ('0000.000.00000', '0000.00000'))
                    </where>
                </update>
                <!-- ==================================================== -->
                <!-- TRY-BODY-END                                         -->
                <!-- Need for postgresql :                                -->
                <!-- ==================================================== -->
                <connection.releaseSavepoint/>
            </body>
            <catch>
                <!-- ==================================================== -->
                <!-- TRY-CATCH-START                                      -->
                <!-- Need for postgresql :                                -->
                <!-- ==================================================== -->
                <connection.rollbackSavepoint/>
                <set name='m_resp'><error.isSQL/></set>
                <println>SQL error must be true: [<m_resp/>]  error.message: [<error.message/>]</println>
            </catch>
        </try>
        <!-- ==================================================== -->
        <!-- Error user exception from trigger !                  -->
        <!-- The error must be false.                             -->
        <!-- ==================================================== -->
        <set name='m_fecfin' type='date'>31-12-3000</set>
        <set name='m_fecfin_new' type='date'>01-06-2010</set>
        <try>
            <body>
                <update table='ctipoimp'>
                    <column name='fecini'><m_fecfin_new/></column>
                    <where>
                        codimp = 'NOR' and fecfin = <m_fecfin/>
                    </where>
                </update>
            </body>
            <catch>
                <set name='m_resp'><error.isSQL/></set>
                <println>Triggered exception error must be false: [<m_resp/>]  error.message: [<error.message/>]</println>
                <println>error.sqlstate: [<error.sqlstate/>]  error.sqlcode: [<error.sqlcode/>] </println>
            </catch>
        </try>
    </body>
</xsql-script>

2.1.2 error.line

Returns the number of the line of code where the error occurred.

<error.line />
Example
Copy
<xsql-script>
    <body>
        <try>
            <body>
                <!-- An exception may occur in the database engine (column described does not exist). -->
                <insert table='cdiarios'>
                    <column name='descri'>test</column>
                </insert>
            </body>
            <catch>
                <println>Error on line: <error.line/></println>
            </catch>
        </try>
    </body>
</xsql-script>

2.1.3 error.message

Returns the first error message. An exception can have two error messages.

<error.message  />
Example
Copy
<xsql-script>
    <body>

        <try>
            <body>
                <!-- An exception may occur in the database engine (column described does not exist). -->
                <insert table='cdiarios'>
                    <column name='descri'>test</column>
                </insert>
            </body>
            <catch>
                <println>Error at line: <error.line/></println>
                <println>.......in tag: <error.tag/></println>
                <println>........cause: <error.message/></println>
            </catch>
        </try>

    </body>
</xsql-script>

2.1.4 error.message2

Returns the second error message.

<error.message2  />
Example
Copy
<xsql-script>
    <body>

        <try>
            <body>
                <!-- An exception may occur in the database engine (column described does not exist). -->
                <insert table='cdiarios'>
                    <column name='descri'>test</column>
                </insert>
            </body>
            <catch>
                <println>Error at line: <error.line/></println>
                <println>.......in tag: <error.tag/></println>
                <println>...root cause: <error.message/></println>
                <println>...node cause: <error.message2/></println>
            </catch>
        </try>

    </body>
</xsql-script>

2.1.5 error.sqlcode

If the error has occurred in the database engine, the SQL error code is returned. Otherwise, null is returned.

<error.sqlcode />
Example
Copy
<xsql-script>
    <body>

        <try>
            <body>
                <!-- An exception may occur in the database engine (column described does not exist). -->
                <insert table='cdiarios'>
                    <column name='descri'>test</column>
                </insert>
            </body>
            <catch>
                <println>Error on line: <error.line/></println>
                <println>.......in tag: <error.tag/></println>
                <println>...root cause: <error.message/></println>
                <println>...node cause: <error.message2/></println>
                <println>....sql code1: <error.sqlcode/></println>
            </catch>
        </try>

    </body>
</xsql-script>

2.1.6 error.sqlcode2

If the error has occurred in the database engine, there may be a second SQL error code. If it does not exist or is not a database error, null will be returned.

<error.sqlcode2 />
Example
Copy
<xsql-script>
    <body>

        <try>
            <body>
                <!-- An exception may occur in the database engine (column described does not exist). -->
                <insert table='cdiarios'>
                    <column name='descri'>test</column>
                </insert>
            </body>
            <catch>
                <println>Error on line: <error.line/></println>
                <println>.......in tag: <error.tag/></println>
                <println>...root cause: <error.message/></println>
                <println>...node cause: <error.message2/></println>
                <println>....sql code1: <error.sqlcode/></println>
                <println>....sql code2: <error.sqlcode2/></println>
            </catch>
        </try>

    </body>
</xsql-script>

2.1.7 error.sqlstate

If the error has occurred in the database engine, the status code of the SQL error is returned. Otherwise, null is returned.

<error.sqlstate />
Example
Copy
<xsql-script>
    <body>

        <try>
            <body>
                <!-- An exception may occur in the database engine (column described does not exist). -->
                <insert table='cdiarios'>
                    <column name='descri'>test</column>
                </insert>
            </body>
            <catch>
                <println>Error at line: <error.line/></println>
                <println>.......in tag: <error.tag/></println>
                <println>...root cause: <error.message/></println>
                <println>...node cause: <error.message2/></println>
                <println>....sql code1: <error.sqlcode/></println>
                <println>....sql code2: <error.sqlcode2/></println>
                <println>...sql state1: <error.sqlstate/></println>
            </catch>
        </try>

    </body>
</xsql-script>

2.1.8 error.sqlstate2

If the error has occurred in the database engine, there may be a second status code of the SQL error. If it does not exist or is not a database error, null will be returned.

<error.sqlstate2 />
Example
Copy
<xsql-script>
    <body>

        <try>
            <body>
                <!-- An exception may occur in the database engine (column described does not exist). -->
                <insert table='cdiarios'>
                    <column name='descri'>test</column>
                </insert>
            </body>
            <catch>
                <println>Error at line: <error.line/></println>
                <println>.......in tag: <error.tag/></println>
                <println>...root cause: <error.message/></println>
                <println>...node cause: <error.message2/></println>
                <println>....sql code1: <error.sqlcode/></println>
                <println>....sql code2: <error.sqlcode2/></println>
                <println>...sql state1: <error.sqlstate/></println>
                <println>...sql state2: <error.sqlstate2/></println>
            </catch>
        </try>

    </body>
</xsql-script>

2.1.9 error.stackTrace

Returns the full trace of the error.

<error.stackTrace />
Example
Copy
<xsql-script>
    <body>

        <try>
            <body>
                <!-- An exception may occur in the database engine (column described does not exist). -->
                <insert table='cdiarios'>
                    <column name='descri'>test</column>
                </insert>
            </body>
            <catch>
                <println>Error at line: <error.line/></println>
                <println>.......in tag: <error.tag/></println>
                <println>...root cause: <error.message/></println>
                <println>...node cause: <error.message2/></println>
                <println>....sql code1: <error.sqlcode/></println>
                <println>....sql code2: <error.sqlcode2/></println>
                <println>...sql state1: <error.sqlstate/></println>
                <println>...sql state2: <error.sqlstate2/></println>
                <println>..stack trace: <error.stackTrace/></println>
            </catch>
        </try>

    </body>
</xsql-script>
Copy
c:\jas>bin\ws-dbscript -file test.xml -user dpc -dbms demo_formacion
Running script................: test
Error at line: 7
.......in tag: insert
...root cause: Column (descri) not found in any table in the query (or SLV is undefined).
...node cause: RW[dbsrv2][demo_formacion][deister_prg] {1}
....sql code1: -217
....sql code2: 0
...sql state1: IX000
...sql state2: null
..stack trace:     > FROM [0]
java.sql.SQLException: Column (descri) not found in any table in the query (or SLV is undefined).
        at com.informix.jdbc.IfxSqli.addException(IfxSqli.java:3105)
        at com.informix.jdbc.IfxSqli.receiveError(IfxSqli.java:3419)
        at com.informix.jdbc.IfxSqli.dispatchMsg(IfxSqli.java:2282)
        at com.informix.jdbc.IfxSqli.receiveMessage(IfxSqli.java:2202)
        at com.informix.jdbc.IfxSqli.executePrepare(IfxSqli.java:1093)
        at com.informix.jdbc.IfxResultSet.executePrepare(IfxResultSet.java:189)
        at com.informix.jdbc.IfxPreparedStatement.setupExecutePrepare(IfxPreparedStatement.java:193)
        at com.informix.jdbc.IfxPreparedStatement.<init>(IfxPreparedStatement.java:171)
        at com.informix.jdbc.IfxSqliConnect.prepareStatement(IfxSqliConnect.java:1964)
        at deister.webstudio.core.dbms.jdbc.DBPoolConnection.prepareStatement(DBPoolConnection.java:3642)
        at deister.webstudio.core.xsql.script.XSQLScriptRunner.__prepareStatement(XSQLScriptRunner.java:8315)
        at deister.webstudio.core.xsql.script.functions.f_sql.function_insert.a(function_insert.java:356)
        at deister.webstudio.core.xsql.script.XSQLScriptRunner.a(XSQLScriptRunner.java:5668)
        at deister.webstudio.core.xsql.script.XSQLScriptRunner.__exec_xsql_command(XSQLScriptRunner.java:5566)
        at deister.webstudio.core.xsql.script.commands.command_try.a(command_try.java:66)
        at deister.webstudio.core.xsql.script.XSQLScriptRunner.__exec_xsql_command(XSQLScriptRunner.java:5546)
        at deister.webstudio.core.xsql.script.XSQLScriptRunner.a(XSQLScriptRunner.java:3591)
        at deister.webstudio.core.xsql.script.XSQLScriptRunner.run(XSQLScriptRunner.java:3508)
        at java.lang.Thread.run(Thread.java:595)

        SQL ERROR: -217 Column (% s) not found in any query table (or SLV not defined).
        SQL STATE: IX000
    > FROM [1]
SQLExceptionInfo: RW[dbsrv2][demo_formacion][deister_prg] {1}
INSERT INTO cdaily
        (descri)
         VALUES (?)

Program returned..............: <void >
Execution completed...........: 1.528 secs.
c:\jas>

2.1.10 error.tag

Returns the name of the tag where the error occurred.

<error.tag />
Example
Copy
<xsql-script>
    <body>

        <try>
            <body>
                <!-- An exception may occur in the database engine (column described does not exist). -->
                <insert table='cdiarios'>
                    <column name='descri'>test</column>
                </insert>
            </body>
            <catch>
                <println>Error on line: <error.line/></println>
                <println>.......in tag: <error.tag/></println>
            </catch>
        </try>

    </body>
</xsql-script>

3 Considerations

The try-catch section sends the stack trace of the error in the standard output, with a limit of 100 errors to avoid massive sending of error traces if a process generates an excessive number of exceptions. The standard output can be:

  • The server log file, if a script is executed from a program (SQL Object).
  • The console of DBStudio, if executed from this utility.

The format can be seen below:

Copy
<XSQL-EXCEPTION-CATCH>
<STACKTRACE>
<Root-Cause>
<Root-Cause>
...
</STACKTRACE>
</XSQL-EXCEPTION-CATCH>

It has an ID (the error counter), code (the 20 lines of code closest to where the exception occurred), cause (the stacktrace), and within it, the Root Cause, SQLExceptionInfo, etc.

Example
Copy
<XSQL-EXCEPTION-CATCH id='1'> 
<STACKTRACE>
error : java.sql.SQLException: Routine (a) cannot be resolved.
server : 192.168.10.100 (titan.local)
calltree : <embed>
function : <embed>
date : Tue May 23 11:11:27 CEST 2017
jobid : 1
user : jet
dbms : demo_sports
dict : 
tag : execute-procedure
line : 5
code : 
<body>
<execute-procedure name='a'/>
</body>

cause : 
deister.webstudio.core.xsql.script.XSQLScriptException: java.sql.SQLException: Routine (a) can not be resolved.
at deister.webstudio.core.xsql.script.XSQLScriptRunner.prepareStatement(XSQLScriptRunner.java:6165)
at deister.webstudio.core.xsql.script.functions.f_sql.function_execute_procedure.process(function_execute_procedure.java:205)
at deister.webstudio.core.xsql.script.XSQLScriptRunner.__eval_xsql_function(XSQLScriptRunner.java:4254)
at deister.webstudio.core.xsql.script.XSQLScriptRunner.__exec_xsql_command(XSQLScriptRunner.java:4074)
at deister.webstudio.core.xsql.script.commands.command_try.process(command_try.java:64)
at deister.webstudio.core.xsql.script.XSQLScriptRunner.__exec_xsql_command(XSQLScriptRunner.java:4055)
at deister.webstudio.core.xsql.script.XSQLScriptRunner.__run_trappable(XSQLScriptRunner.java:1821)
at deister.webstudio.core.xsql.script.XSQLScriptRunner.call(XSQLScriptRunner.java:1719)
at deister.webstudio.core.xsql.script.XSQLScriptLoader.__execute(XSQLScriptLoader.java:924)
at deister.webstudio.core.xsql.script.XSQLScriptLoader.execute(XSQLScriptLoader.java:827)
at deister.axional.studio.core.test.xsql.test_xsql$1.beforeExecute(test_xsql.java:52)
at deister.axional.server.jdbc.JDBCConnectionWrapper.executeScriptOrQuery(JDBCConnectionWrapper.java:2048)
at deister.axional.server.jdbc.pool.JDBCPoolFactory.executeScriptOrQuery(JDBCPoolFactory.java:1307)
at deister.axional.studio.core.test.xsql.test_exception.test1(test_exception.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: java.sql.SQLException: Routine (a) can not be resolved.
at com.informix.jdbc.IfxSqli.a(IfxSqli.java:3609)
at com.informix.jdbc.IfxSqli.E(IfxSqli.java:3934)
at com.informix.jdbc.IfxSqli.dispatchMsg(IfxSqli.java:2682)
at com.informix.jdbc.IfxSqli.receiveMessage(IfxSqli.java:2598)
at com.informix.jdbc.IfxSqli.executePrepare(IfxSqli.java:1403)
at com.informix.jdbc.IfxPreparedStatement.f(IfxPreparedStatement.java:326)
at com.informix.jdbc.IfxPreparedStatement.a(IfxPreparedStatement.java:306)
at com.informix.jdbc.IfxPreparedStatement.<init>(IfxPreparedStatement.java:176)
at com.informix.jdbc.IfxSqliConnect.h(IfxSqliConnect.java:6719)
at com.informix.jdbc.IfxSqliConnect.prepareStatement(IfxSqliConnect.java:6746)
at deister.axional.server.jdbc.impl.JDBCConnection.prepareStatement(JDBCConnection.java:521)
at deister.axional.server.jdbc.JDBCConnectionWrapper.prepareReadOnlyStatement(JDBCConnectionWrapper.java:2558)
at deister.webstudio.core.xsql.script.XSQLScriptRunner.prepareStatement(XSQLScriptRunner.java:6141)
... 36 more
Caused by: java.sql.SQLException
at com.informix.util.IfxErrMsg.getSQLException(IfxErrMsg.java:413)
at com.informix.jdbc.IfxSqli.E(IfxSqli.java:3939)
... 47 more
<Root cause>: class java.sql.SQLException
java.sql.SQLException: Routine (a) can not be resolved.
at com.informix.jdbc.IfxSqli.a(IfxSqli.java:3609)
at com.informix.jdbc.IfxSqli.E(IfxSqli.java:3934)
at com.informix.jdbc.IfxSqli.dispatchMsg(IfxSqli.java:2682)
at com.informix.jdbc.IfxSqli.receiveMessage(IfxSqli.java:2598)
at com.informix.jdbc.IfxSqli.executePrepare(IfxSqli.java:1403)
at com.informix.jdbc.IfxPreparedStatement.f(IfxPreparedStatement.java:326)
at com.informix.jdbc.IfxPreparedStatement.a(IfxPreparedStatement.java:306)
at com.informix.jdbc.IfxPreparedStatement.<init>(IfxPreparedStatement.java:176)
at com.informix.jdbc.IfxSqliConnect.h(IfxSqliConnect.java:6719)
at com.informix.jdbc.IfxSqliConnect.prepareStatement(IfxSqliConnect.java:6746)
at deister.axional.server.jdbc.impl.JDBCConnection.prepareStatement(JDBCConnection.java:521)
at deister.axional.server.jdbc.JDBCConnectionWrapper.prepareReadOnlyStatement(JDBCConnectionWrapper.java:2558)
at deister.webstudio.core.xsql.script.XSQLScriptRunner.prepareStatement(XSQLScriptRunner.java:6141)
at deister.webstudio.core.xsql.script.functions.f_sql.function_execute_procedure.process(function_execute_procedure.java:205)
at deister.webstudio.core.xsql.script.XSQLScriptRunner.__eval_xsql_function(XSQLScriptRunner.java:4254)
at deister.webstudio.core.xsql.script.XSQLScriptRunner.__exec_xsql_command(XSQLScriptRunner.java:4074)
at deister.webstudio.core.xsql.script.commands.command_try.process(command_try.java:64)
at deister.webstudio.core.xsql.script.XSQLScriptRunner.__exec_xsql_command(XSQLScriptRunner.java:4055)
at deister.webstudio.core.xsql.script.XSQLScriptRunner.__run_trappable(XSQLScriptRunner.java:1821)
at deister.webstudio.core.xsql.script.XSQLScriptRunner.call(XSQLScriptRunner.java:1719)
at deister.webstudio.core.xsql.script.XSQLScriptLoader.__execute(XSQLScriptLoader.java:924)
at deister.webstudio.core.xsql.script.XSQLScriptLoader.execute(XSQLScriptLoader.java:827)
at deister.axional.studio.core.test.xsql.test_xsql$1.beforeExecute(test_xsql.java:52)
at deister.axional.server.jdbc.JDBCConnectionWrapper.executeScriptOrQuery(JDBCConnectionWrapper.java:2048)
at deister.axional.server.jdbc.pool.JDBCPoolFactory.executeScriptOrQuery(JDBCPoolFactory.java:1307)
at deister.axional.studio.core.test.xsql.test_exception.test1(test_exception.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: java.sql.SQLException
at com.informix.util.IfxErrMsg.getSQLException(IfxErrMsg.java:413)
at com.informix.jdbc.IfxSqli.E(IfxSqli.java:3939)
... 47 more
<Root cause>: class deister.axional.server.jdbc.exception.SQLExceptionInfo
<SQLExceptionInfo from='JDBCConnectionWrapper[[demo_sports@dbsrv1][informix:informix_dba][CORE-RW]-C00001]'>
EXECUTE PROCEDURE a ()
</SQLExceptionInfo>
</STACKTRACE>
</XSQL-EXCEPTION-CATCH>

Limit

Intensive usage of try-catch blocks, which send many exception traces to the standard error channel, may cause the process to stop due to the general limit imposed for XSQL Script output. Script output