美文网首页
Dart 异常

Dart 异常

作者: Abner_XuanYuan | 来源:发表于2023-08-09 10:02 被阅读0次

1、简介

Dart 代码可以抛出异常和捕获异常。异常表示一些未知的错误情况。如果异常没有被捕获,则异常会抛出,导致抛出异常的代码终止执行。
Dart 中的所有异常是非检查异常。方法不会声明它们抛出的异常,也不要求捕获任何异常。
Dart 提供了 Exception、Error 以及一些子类型,也可以定义自己的异常类型。此外 Dart 程序可以抛出任何非 null 对象,不仅限 Exception 和 Error 对象。

2、异常处理

1、throw
/// 抛出类型
throw FormatException('Expected at least 1 section’);
/// 抛出任意对象
throw 'Out of llamas!’;
2、catch

捕获异常可以避免异常继续传递(除非重新抛出( rethrow )异常)。可以通过捕获异常的机会来处理该异常。

示例一:
try {

} catch (e) {

}
示例二
try {
  
} on OutOfLlamasException {
  // 一个特殊的异常
} on Exception catch (e) {
  // 其他任何异常
} catch (e) {
  // 没有指定的类型,处理所有异常
}

注:捕获语句中可以同时使用 oncatch ,也可以单独分开使用。使用 on 来指定异常类型,使用 catch 来 捕获异常对象。

示例三
try {
  // ···
} on Exception catch (e) {
  print('Exception details:\n $e');
} catch (e, s) {
  print('Exception details:\n $e');
  print('Stack trace:\n $s');
}

注:catch() 函数可以指定1到2个参数,第一个参数为抛出的异常对象,第二个为堆栈信息 ( 一个 StackTrace 对象 )。

示例四
void misbehave() {
  try {
    dynamic foo = true;
    print(foo++); // Runtime error
  } catch (e) {
    print('misbehave() partially handled ${e.runtimeType}.');
    rethrow; // Allow callers to see the exception.
  }
}

void main() {
  try {
    misbehave();
  } catch (e) {
    print('main() finished handling ${e.runtimeType}.');
  }
}

注:如果仅需要部分处理异常,那么可以使用关键字 rethrow 将异常重新抛出。

3、finally

不管是否抛出异常,finally 中的代码都会被执行。如果 catch 没有匹配到异常,异常会在 finally 执行完成后,再次被抛出。

try {
  
} finally {
  //无论是否有异常,都会执行
}
try{

}catch(e){

}finally{

}

相关文章

  • dart 异常

    dart中的异常 异常处理 抛出异常 异常捕获

  • Dart异常 VS Java异常,以及try-catch-fin

    Dart异常与Java异常有哪些不同呢? Dart的所有异常都是未经检查的异常。方法不声明(没throws)它们可...

  • Dart语言 4 异常和类

    异常 Dart代码可以抛出并捕获异常。如果未捕获异常,则会引发程序终止 与Java相比,Dart的所有异常都是未经...

  • Dart

    Dart线程模型及异常捕获 Flutter 实战 Dart的内存回收机制 Dart GC

  • Dart - 异常

    Dart 代码可以抛出和捕获异常。异常表示一些未知的错误情况,如果异常没有捕获则会被抛出从而导致抛出异常的代码终止...

  • dart语法7-泛型

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法8-库

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法10-生成器

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法9-异步

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

  • dart语法11

    dart语法1dart语法2-内置类型dart语法3-函数dart语法4-操作符dart语法5-异常dart语法6...

网友评论

      本文标题:Dart 异常

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