美文网首页
Dart基础(五)-错误和异常

Dart基础(五)-错误和异常

作者: 苍眸之宝宝 | 来源:发表于2022-01-07 09:23 被阅读0次

    简介:

    您的Dart代码可以抛出和捕获异常。异常是指示发生了意外情况的错误。如果未捕获异常,则引发异常的隔离程序将被挂起,并且通常会终止隔离程序及其程序。

    与Java相反,Dart的所有异常都是未检查的异常。方法不声明它们可能抛出的异常,也不需要捕获任何异常。

    Dart提供了异常和错误类型,以及许多预定义的子类型。当然,您可以定义自己的异常。然而,Dart程序可以抛出任何非空对象——不仅仅是Exception和Error对象——作为异常。

      总结一下要点:

    • Dart与其它语言一样有异常处理机制,可以抛出和捕获异常;
    • Dart中发生未捕获异常不会中断整个程序,但会中断当前代码段,继续执行后续的代码;
    • Dart和其它语言不同是所有异常都是未检查的异常,即所有的异常都不用捕获或处理(当然,不处理,不代表没有);
    • Dart提供了ExceptionError 类及其子类对异常和错误进行捕获处理;
    • Dart也可以抛出任何非空对象作为异常。

    异常的处理:

      Dart中处理异常的方式:

    • throw抛出异常;
    • try-on处理特定类型的异常;
    • try-catch处理无法预料的异常;
    • try-on-catch处理特定类型的异常和其它无法预料的异常;
    • try-on...catch-finally处理完异常后统一进行的操作;
    divide(int a, int b) {
      if (b == 0) {
        throw new IntegerDivisionByZeroException();
      }
      return a / b;
    }
    
    // try-on
    try {
      breedMoreLlamas();
    } on OutOfLlamasException {
      buyMoreLlamas();
    }
    
    // try-catch
    try {
        dynamic foo = true;
        print(foo++); // Runtime error
      } catch (e) {
        print('misbehave() partially handled ${e.runtimeType}.');
        rethrow; // Allow callers to see the exception.
      }
    
    try {
      breedMoreLlamas();
    } on OutOfLlamasException {
      // A specific exception
      buyMoreLlamas();
    } on Exception catch (e) {
      // Anything else that is an exception
      print('Unknown exception: $e');
    } catch (e) {
      // No specified type, handles all
      print('Something really unknown: $e');
    }
    
    try {
      // ···
    } on Exception catch (e) {
      print('Exception details:\n $e');
    } catch (e, s) {  // 异常,异常堆栈
      print('Exception details:\n $e');
      print('Stack trace:\n $s');
    }
    
    // try-catch-finally
    try {
      breedMoreLlamas();
    } catch (e) {
      print('Error: $e'); // Handle the exception first.
    } finally {
      cleanLlamaStalls(); // Then clean up.
    }
    

    相关文章

      网友评论

          本文标题:Dart基础(五)-错误和异常

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