美文网首页
异常抛出

异常抛出

作者: Harely | 来源:发表于2020-05-21 15:07 被阅读0次

    异常抛出之 Throw

    • 抛出一个已知异常
    //执行
    print('<<<<<<<<<<<<<抛出异常前');
    //执行
    throw new FormatException('抛出异常!!!');
    //或者:  throw '抛出异常!!!';
    //不执行
    print('抛出异常前>>>>>>>>>>>>');
    

    打印效果:


    效果打印

    从打印结果来看,一旦发生异常后面的逻辑就不会执行了。


    Catch

    • 普通捕获
    print('<<<<<<<<<<<<<抛出异常前');
    var initArray = [10, 20, 30, 40, 50];
    try {
      
      print('========= ${initArray[5]}');
      
    } catch (e) {
      print('try 异常错误 !' + e.toString());
    }
    print('>>>>>>>>>>>> try 异常捕获结束 !');
               
    
    效果: catch 捕获

      用try 包含异常的代码,然后进行捕获。捕获后进行输出错误的代码提示,但是后面的代码依然执行。

    • 使用 on 的关键词
    print('<<<<<<<<<<<<<抛出异常前');
    var initArray = [10, 20, 30, 40, 50];
    
    try {
    print('========= ${initArray[5]}');
    
    } on RangeError {
    print('====== on ${initArray[4]}');
    } on FormatException {
    print('FormatException');
    } catch (e) {
    print('try 异常错误提示 !' + e.toString());
    }
    print('>>>>>>>>>>>> try 异常捕获结束 !');
    

    效果:


    异常捕获

      我们看到详细的错误信息没有打印,因为代码逻辑走到 on RangeError 分支,而输出的详细错误信息是作为默认异常处理才被执行的。

    • 再次抛出异常 rethrow
    print('<<<<<<<<<<<<<抛出异常前');
    var initArray = [10, 20, 30, 40, 50];
    
    try {
      print('========= ${initArray[5]}');
      
    } on RangeError {
      print('====== on ${initArray[4]}');
      rethrow;
    } on FormatException {
      print('FormatException');
    } catch (e) {
      print('try 异常错误提示 !' + e.toString());
    }
    print('>>>>>>>>>>>> try 异常捕获结束 !');
    
    

    效果:


    再次抛出异常并提示打印问题

      我们看到当我们使用了 rethrow 后,我们的代码并没有对后面的逻辑进行执行,尤其是 catch 中的捕获,仅仅是给出了错误的原因。


    Finally

                print('<<<<<<<<<<<<<抛出异常前');
                
                var initArray = [10, 20, 30, 40, 50];
    
                try {
                  print('========= ${initArray[5]}');
                  
                } on RangeError {
                  print('====== on ${initArray[4]}');
                  rethrow;
                } on FormatException {
                  print('FormatException');
                } catch (e) {
                  print('try 异常错误提示 !' + e.toString());
                } finally {
                  print('程序运行结束');
                }
                print('>>>>>>>>>>>> try 异常捕获结束 !');
    
    效果

    相关文章

      网友评论

          本文标题:异常抛出

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