Dart 异常处理,异常表示发生了意外的错误,如果没有捕获异常,引发异常的程序将被挂起,并且程序将被终止。
Dart代码可以抛出并捕获异常,但与Java相反,Dart的所有异常都是未检查的异常。
Dart提供了异常和错误类型以及许多预定义的子类型。当然,也可以定义自己的异常。然而,Dart程序可以抛出任何非空对象。
抛出异常
下面是一个抛出或引发异常的例子:
throw FormatException('抛出一个FormatException异常');
也可以抛出任意对象:
throw '数据非法!';
提示 稳定健壮的程序一定是做了大量异常处理的,所以建议在编写程序时尽量考虑到可能发生异常的情况。
捕获异常
可以指定一个或两个参数来捕获异常(catch),第一个是抛出的异常,第二个是堆栈跟踪(StackTrace对象),如下面的代码所示:
try {
// ...
} on Exception catch (e) {
print('Exception details:\n $e');
} catch (e, s) {
print('Exception details:\n $e');
print('Stack trace:\n $s');
}
上面的代码中,第一个catch用来捕获异常详细信息,第二个catch是堆栈跟踪信息。
finally
要确保某些代码能够运行,无论是否抛出异常,可使用finally子句。如果没有catch子句匹配异常,则异常在finally子句运行后抛出。如下面的代码所示,在最下方加上了finally语句:
try {
// ...
} on Exception catch (e) {
print('Exception details:\n $e');
} catch (e, s) {
print('Exception details:\n $e');
print('Stack trace:\n $s');
} finally {
print('Do some thing:\n');
}
评论前必须登录!
注册