Flutter/Dart第13天:Dart错误处理

Dart官方文档:https://dart.dev/language/error-handling

重要说明:本博客基于Dart官网文档,但并不是简单的对官网进行翻译,在覆盖核心功能情况下,我会根据个人研发经验,加入自己的一些扩展问题和场景验证。

异常

和Java一样,Dart也可以抛出异常,也可以捕获异常。Dart异常如果未被捕获,容易导致进程挂起和导致程序退出。所以,我们在编写Dart程序时,需要特别关注异常。

和Java不同的是,Dart中的异常全部都是未检测异常。如果一个方法没有申明任何类型的异常,那么我们就无需捕获该方法的异常。

Dart提供了ExceptionError两种异常的基础类型,同时内置了其他一些它们的子类。我们也可以定义我们自己的异常类型,Dart可以把任何非空的对象当作异常抛出,且这些对象类型不一定是ExceptionError类型的子类(和Java有很大区别)。

throw抛出异常

Dart可以把任务非空对象当作异常抛出,但建议抛出的异常为Exception或者Error的子类,下面是几个代码样例:

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

throw 'Out of llamas!';

void distanceTo(Point other) => throw UnimplementedError();

catch捕获异常

捕获异常,一般有种目的:一是为了阻止异常继续传播,二是我们期望重新抛出异常。

捕获异常的语法有几种:

  • on 异常类型 catch(异常对象)
  • catch(异常对象)
  • catch(异常对象, 异常堆栈)

捕获异常后,我们可以进行一些处理。我们可以根据异常类型,捕获多个异常。异常语句中若未定义异常类型,则捕获所有异常,如下代码样例:

try {
   
  breedMoreLlamas();
} on OutOfLlamasException {
   
  // `OutOfLlamasException`类型的异常
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值