IT@程序员猿媛

第6章 Dart基础语法 -- 异常处理

2019-05-12  本文已影响4人  yangsg

1. 异常的定义

Dart的异常处理机制参考了Java语言的异常处理机制。
与Java语言不同的是,Dart中不存在检查性异常的概念,所有的异常都可以理解为是Java语言的运行时异常,也就是说程序不会强制要求编程者处理异常,但若发生异常,则程序中断执行。
Dart主要分为ErrorException两种类型。

2. 抛出异常

与Java中抛出异常的方式一致,使用throw关键字可以抛出一个异常。

throw RangeError("下标越界");

与Java不同的是,Dart允许抛出任意对象作为异常,但一般不建议这么做。

throw "下标越界";

3. 捕获异常

使用on 异常类型 catch(异常对象)句式捕获异常

main() {
  try {
    test();
  } on RangeError catch(e){
    print(e);
  }on Error catch(e){
    print(e);
  }
}
test(){
  throw RangeError("下标越界");
}

4. 重新抛出

使用rethrow句式可以在捕获异常后重新抛出异常。比如Java中MVC模式在DAO层捕获异常后需要重新上报异常给Service层进行事务处理,此时在DAO的代码中的catch中需要重新throw异常,类似情况可以使用rethrow直接重新上报异常。

main() {
  try {
    test();
  } on RangeError catch(e){
    print(e);
    rethrow;
  }
}
test(){
  throw RangeError("下标越界");
}

5. 最终处理

同Java语言一致,利用finally代码块作为异常处理的最终块,无论如何都会执行finally中的代码。
适用于类似回收资源,关闭stream等类似操作。
使用方式:

try{
...
}finally{
...
}

try{
...
}on Error catch(e){
...
}finally{
...
}
上一篇 下一篇

猜你喜欢

热点阅读