throw — 抛出用户定义的异常或重新抛出捕获的异常。
throw( : : Exception : )
借助 try、catch、endtry 和 throw 算子,可在 HDevelop 中实现动态异常处理,其功能与 C++ 和 C# 中的异常处理机制相当。HDevelop 异常处理的基本概念亦在 try 算子、dev_set_check 算子以及 “HDevelop用户指南” 中有所阐述。
算子 throw 提供了从程序任意位置抛出异常的机会。该异常可被外围 try-catch 代码块的 catch 算子捕获。通过这种方式,开发者能够定义特定的错误或异常状态,此时常规程序执行将终止,转而执行特定的跨函数异常处理流程——例如释放资源或从预定义状态重启程序。
在这种用户自定义异常中,几乎任意元组都可以作为 Exception 参数抛出,只需将元组的首个元素设置为 ≥30000 的用户自定义错误代码即可。
此外,借助 throw 算子,可以重新抛出由 catch 算子捕获的异常。这种做法在某些情况下是合理的,例如当在内部
try-catch-endtry 代码块(如外部过程函数)中,仅能妥善处理特定异常,而所有其他异常必须传递给调用方,以便由外部 try-catch-endtry 代码块进行捕获和处理。
catch 算子捕获的 Exception 元组直接传递给 throw 算子的 Exception 参数。此外,还可以在 Exception 元组中附加任意(但是不是图标)用户数据,这些数据在捕获异常后可通过 dev_get_exception_data 算子以 'user_data' 形式访问:
try
|
...
|
catch(Exception)
|
...
|
UserData := ...
|
throw([Exception, UserData])
|
endtry
|
C 语言不支持导出 try、catch、endtry 和 throw 算子,仅 C++、C# 和 VisualBasic/.NET 语言支持。其中仅后者支持跨函数抛出异常。
Exception (输入控制) exception-array → (integer / string)
元组返回异常数据或用户定义的错误代码。
如果指定参数的值正确,throw(作为算子)返回 2 ( H_MSG_TRUE )。否则,将抛出一个异常并返回错误代码。
try,
catch,
endtry,
dev_get_exception_data,
dev_set_check
基础