.

运算符‘__TRY’,‘__CATCH’,‘__FINALLY’,‘__ENDTRY’

.
.

该运算符是从IEC 61131-3标准的扩展,它们用于IEC代码中的特定异常处理。

.语法


__TRY
    <statements_try>
__CATCH(exec)
    <statements_catch>
__FINALLY
    <statements_finally>
__ENDTRY 
    <statements_next>
 

__Try这个操作符中的语句引发异常时,应用程序不会停止。而是,应用程序在__Catch中执行语句,启动异常处理,然后在__FINALLY中执行语句。异常处理以__ENDTRY结尾,并且应用程序执行后续语句。

一个例外的IEC变量的数据类型为__System.ExceptionCode

.

.例如

如果__TRY中的语句引发异常,则不会停止程序执行。而是执行 __CATCH中的语句。因此,在此示例中,应用程序执行exc函数,然后执行__FINALLY中的语句,最后执行__ENDTRY中的语句。


FUNCTION Tester : UDINT
VAR_INPUT
    count : UDINT;
END_VAR
VAR_OUTPUT
    strExceptionText : STRING;
END_VAR
VAR
    exc : __SYSTEM.ExceptionCode;
END_VAR

__TRY
Tester := tryFun(count := count, testcase := g_testcase);  // 此语句已测试。如果出现异常,则首先执行__CATCH中的语句,然后执行__FINALLY中的语句。
__CATCH(exc)
HandleException(exc, strExceptionText => strExceptionText);
__FINALLY
GVL.g_count := GVL.g_count + 2;
__ENDTRY 
 
.
 数据类型“__System.ExceptionCode”