Dart(12)-异常

一、概述

Dart 提供了 Exception 和 Error 类型, 以及一些它们的实现类,也可以自定义异常类。与Java不同,Dart的所有异常都是未经检查的异常,并且没有throws。

二、异常类型

名称说明
DeferredLoadException延迟加载异常
FormatException格式异常
IntegerDivisionByZeroException整数除零异常
IOExceptionIO异常
IsolateSpawnException隔离产生异常
OSError操作系统异常
TimeoutException超时异常

三、Error类型

名称说明名称说明
AbstractClassInstantiationError抽象类实例化错误NoSuchMethodError没有这个方法错误
ArgumentError参数错误NullThrownErrorNull 错误
AssertionError断言错误OutOfMemoryError内存溢出错误
AsyncError异步错误RemoteError远程错误
CastErrorCast 错误StackOverflowError堆栈溢出错误
ConcurrentModificationError并发修改错误StateError状态错误
CyclicInitializationError周期初始错误TypeError类型错误
FallThroughErrorFall Through 错误UnimplementedError未实现的错误
JsonUnsupportedObjectErrorjson 不支持错误UnsupportedError不支持错误

四、throw异常

Dart 语言所有异常都是非检查异常,即方法或代码块不一定要声明异常或捕获异常,编译器不会强制你添加Throw或者try/catch。

// 抛出Exception 对象
 throw new IOException(‘IO异常');
​
// 抛出Error 对象
 throw new TypeError();
​
// 抛出任意非null对象
 throw '这是一个抛出异常';

五、on/try/catch异常

(1) 可以通过try/on关键字捕获

当不需要获取异常对象的信息时可以使用try/on。

try{
    throw new OutOfMemoryError();
  } on OutOfMemoryError{
    //todo
  }

(2) 可以通过try/catch捕获

try{
    throw new OutOfMemoryError();
  } catch(e,s){ //e为异常信息,s为异常Stack Trace
    //todo
  }

(3) try/on/catch组合使用

try{
    throw new OutOfMemoryError();
  } on OutOfMemoryError catch(e,s){ //e为异常信息,s为异常Stack Trace
    //todo
  }

(4) 多次try/catch

try{
    throw new OutOfMemoryError();
  } on OutOfMemoryError catch(e,s){ //如何异常为该异常时,后面的IOException将不执行
    //todo
  } on IOException catch(e) {
    //todo
  }

六、finally

无论有无异常都会执行finally代码块

try{
    throw new OutOfMemoryError();
  } on OutOfMemoryError catch(e,s){ 
    //todo
  } finally {
    //todo
  }

七、注意事项

所以我们在编码的时候,在可能会有异常的地方要注意阅读API文档,另外自己写的方法,如果有异常抛出,要在注释处进行声明。比如类库中的File类其中一个方法注释:

/**
   * Synchronously read the entire file contents as a list of bytes.
   *
   * Throws a [FileSystemException] if the operation fails.
   */
  Uint8List readAsBytesSync();

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通过本课程学习您可以学习到Dart语言如下知识:第1章 Dart语言概述:Dart语言简介、Dart语言支持平台开发、Flutter为什么选择Dart语言。第2章 开发环境搭建:下载Dart SDK、Windows下安装Dart SDK、macOS下安装Dart SDK、Visual Studio Code开发工具、IntelliJ IDEA开发工具。第3章 完成个Dart程序:动动手写一个HelloWorld、Dart源代码文件组织结构、Visual Studio Code调试Dart代码、IntelliJ IDEA调试Dart代码。第4章 Dart语法基础:标识符、关键字、变量、常量、注释、库。第5章 Dart数据类型:数值类型、字符串、数据类型相互转换、布尔类型和枚举类型第6章 运算符:算术运算符、算术赋值运算符、关系运算符、逻辑运算符、位运算符、条件运算符、类型检查运算符。第7章 控制语句:分支语句、循环语句、跳转语句。第8章 函数:函数声明、可选参数、头等函数(first-class function)、匿名函数。第9章 类:类声明、getter和setter访问器、构造函数、静态变量和静态方法、级联符号。第10章 继承与多态:Dart中的继承实现、调用父类构造函数、成员变量的覆盖(Override)、方法的覆盖(Override)、多态、混入(Mixins)。第11章 抽象类与接口:抽象类、接口、Dart中隐式接口、实现接口。第12章 数据容器:List容器、Set容器、Map容器、泛型。第13章 异常处理:捕获异常、try-on捕获异常、try-catch捕获异常、try-on-catch捕获异常、使用finally代码块、手动抛出异常、自定义异常类。第14章 异步编程:Dart异步处理机制、案例:同步函数实现读取文件、案例:异步函数实现读取文件、Future对象。  

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值