🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
Haxe允许捕获值,使用 try/catch 语法: > Haxe allows catching values using its try/catch syntax: ~~~ try try-expr catch(varName1:Type1) catch-expr-1 catch(varName2:Type2) catch-expr-2 ~~~ 如果在运行时try表达式引发一个 throw(第5.22节),它可以被任何后续的 catch块捕捉到。这些块由下面部分组成: > If during runtime the evaluation of try-expression causes a throw(5.22),it can be caught by any subsequent catch block. These blocks consist of * 一个变量名用来保存被抛出的值 * 一个显式的类型注释,决定捕捉哪种类型的值 * 这种情况下要执行的表达式 > * a variable name which holds the thrown value, > * an explicit type annotation which determines which types of values to catch, and > * the expression to execute in that case. Haxe 允许抛出和捕捉任何类型的值,它不限于继承自一个特定的异常或者错误类的类型。catch块从上至下检查,第一个和抛出的值类型兼容的被采用。 > Haxe allows throwing and catching any kind of value, it is not limited to types inheriting from a specific exception or error class. Catch blocks are checked from top to bottom with the first one whose type is compatible with the thrown value being picked. 这个过程有许多和编译时的合一(第3.5节)行为的相似之处。然而,因为检查必须在运行时进行,所以有几个限制: > This process has many similarities to the compile-time unification (3.5) behavior. However, since the check has to be done at runtime there are several restrictions: * 类型必须在运行时存在:类实例(第2.3节),enum实例(第2.4节),抽象核心类型(第2.8.7节)和 动态类型(第2.7节)。 * 类型参数必须只能为 Dynamic(第2.7节)。 > * The type must exist at runtime: Class instances (2.3), enum instances (2.4), abstract core types (2.8.7) and Dynamic (2.7). > * Type parameters can only be Dynamic (2.7).