Dart 异常处理

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');
}
赞(0)

评论 抢沙发

评论前必须登录!