如果关心具体异常,针对不同异常进行不同处理,可以使用try...on处理异常,finally是可选的,用于最后的处理。
try {// 使除数为0print(11 ~/ 0);} on IntegerDivisionByZeroException {print("除数为0");} on Exception {print("Exception");} finally {print("finally");}
不关心具体异常,只想捕获,避免异常继续传递,则可以使用try...catch处理
try {print(11 ~/ 0);} catch (e) {// 打印报错信息print(e);} finally {print("finally");}
如果想获取更多异常信息,可以使用两个参数的catch,第二个参数是异常的调用栈信息
try {print(11~/0);} catch(e,s){print(s);}
如果你既想针对不同异常进行不同处理,还想打印调用栈信息,那就将两种结合起来使用
try {print(11 ~/ 0);} on IntegerDivisionByZeroException catch (e, s) {print(s);} on Exception catch (e, s) {print(s);}
