美文网首页IT@程序员猿媛
第6章 Dart基础语法 -- 异常处理

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

作者: yangsg | 来源:发表于2019-05-12 12:54 被阅读4次

    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{
    ...
    }
    

    相关文章

      网友评论

        本文标题:第6章 Dart基础语法 -- 异常处理

        本文链接:https://www.haomeiwen.com/subject/enyaoqtx.html