try...catch容错语句

参考:语句块
编程语言之间可以保持一定的语法近似,但不能保持所有编程规则完全一致,注意不要把其他编程语言异常处理的习惯用法生搬硬套到aardio中来,aardio并不提倡大量的抛出或处理异常,也很少需要使用try语句,aardio中的函数通常都会使用函数的的返回值来检测和处理错误(通常函数返回null,以及错误信息表示出错),这种方式写出来的代码也非常的简洁并易于维护。

try语句尝试执行一个语句块,遇到错误则退出try语句块而不是中断aardio程序。
如果使用了catch语句块就可以捕获异常(catch语句块是可选的)。

try语句块、catch语句块即可以使用{ }标记语句块,也可以使用begin ... end;标记语句块。

示例如下:

io.open(); //打开控制台窗口

try{
    b="aaaaaaaaaaaa" *2
    io.print("错误会中断try语句块")
}
catch(e){ //catch部分可以省略
    io.print( "错误信息:",e )
    //在这里可以调用debug库
    //在栈释放以前调用错误处理
    //所以可以调用debug库中的函数收集错误相关的信息

}

io.print("错误不会中断程序")

错误信息不一定要是一个字符串,传递给error的任何信息都会被catch捕获

try{
    error( {a=2;b=3} ) //error显式抛出一个异常
    io.print("错误会中断try语句块")
}
catch(e){ //catch部分可以省略
    io.print( "错误信息:",e.a,e.b)
}

需要注意的是:aardio禁止在catch语句中再次调用error语句
如果需要在抛出异常前插入一些代码,在执行这些插入的代码以后继续抛出异常,
那么更好的选择在 global.onError事件中添加代码。

容错语句是允许多重嵌套的,一个容错语句允许包含另一个容错语句。
为了清晰的表示嵌套的层次,需要根据嵌套的层次使用tab制表符缩进。

不要使用过深的嵌套,推荐嵌套不要超过三层。