APLX Help : Help on APL language : Errors : Error trapping using :Try..:EndTry
|
|
![]() |
Error trapping using
|
Syntax: :Try ... :CatchIf <boolean expression> ... :CatchAll ... :EndTry The block of code following the :Try keyword is executed, until either an error occurs, or a :CatchIf, :CatchAll, :End or :EndTry is encountered. If no error has occurred within the :Try block, execution transfers to the statement after the :End or :EndTry. If an error occurs in the :Try block (either in the statements in this function, or in any functions called from it), control transfers to the first :CatchIf statement (if any), and the boolean expression is evaluated. If it is true, the block of code following the :CatchIf is executed, and execution then resumes after the :EndTry or :End. If the expression is false, the same procedure is followed for any further :CatchIf blocks in the sequence. If none of the tests is true, the :CatchAll block (if any) is executed. It is permissible to have as many :CatchIf sections as you like. Once an error has been trapped and control passed to a :CatchIf or :CatchAll statement, the error trap is disabled. Thus, if a second error occurs, it will not be trapped, and the function will stop in the normal way (unless the whole :Try... :EndTry sequence is itself executed under another error trap). :Try..:EndTry blocks can be nested. Typically, you use the :CatchIf statement to catch specific types of error, by looking at For example: ∇R←A DIVIDE B [1] ⍝ Protected divide [2] :Try [3] ⍝ Do division under error-trapped conditions [4] R←A÷B [5] :CatchIf 11=↑⎕LER [6] ⍝ DOMAIN ERROR occurred [7] R←0 [8] :CatchAll [9] ⍝ Some other error occurred [10] 'Unexpected error. The message was:' [11] ' ',⎕EM [12] → [13] :EndTry ∇ 4 DIVIDE 3 1.333333333 4 DIVIDE 0 0 DIVIDE 4 Unexpected error. The message was: VALUE ERROR DIVIDE[4] R←A÷B ^ |
|
APLX Help : Help on APL language : Errors : Error trapping using :Try..:EndTry
|
Copyright © 1996-2010 MicroAPL Ltd