Dart 之Exceptions异常

Exceptions(异常)

相比较java的异常有一些区别

Dart 异常是非检查异常。 方法不一定声明了他们所抛出的异常

Dart提供的异常类型:

  • Exceptions
  • Error
  • 自定义异常

Dart 代码可以 抛出任何非 null 对象为异常,不仅仅是实现了 Exception 或者 Error 的对象。

抛出异常

throw new FormatException('Expected at least 1 section');

throw 'Out of llamas!';

异常捕获

Dart 对于抛出多种类型的异常,可以分别捕获对应类型的异常

如果没有指定捕获异常类型,则可以捕获任何类型的异常

可以使用on 或者 catch来声明捕获语句,也可以 同时使用。使用 on 来指定异常类型,使用 catch 来 捕获异常对象

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');
}

函数 catch()可以带有一个或者两个参数, 第一个参数为抛出的异常对象, 第二个为堆栈信息

  ...
} on Exception catch (e) {
  print('Exception details:\n $e');
} catch (e, s) {
  print('Exception details:\n $e');
  print('Stack trace:\n $s');
}

使用 rethrow 关键字可以把捕获的异常给 重新抛出

} catch (e) {
  // No specified type, handles all
  print('Something really unknown: $e');
  rethrow;
}

Finally

使用 一个finally语句来确保一些代码肯定被执行

没有 catch语句来捕获异常, 则在执行完 finally语句后, 异常被抛出了

try {
 
} finally {

}

一般finally放在匹配所有类型异常的catch之后

try {
  
} catch(e) {
 
} finally {

}

Exception 异常类型

-Exception

Error异常类型

error
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容