异常:
异常是在程序执行期间出现的问题,发生遗异常时程序流程中断,程序异常终止;
- dart会抛出并捕获异常,如果没捕获异常,就会中断程序运行
- Exception、Error
- Throw 抛出异常,Catch 捕获并处理异常,on..catch处理多个类型异常
- Finally确保代码的运行,最终都会执行finally语句
常见异常:
- DeferredLoadException 延迟库无法加载
- FormatException 数据类型转换异常,或解析异常
- IntegerDivisionByZeroException 数字除以零
- IOException IO流异常
- NullPoingtException 空指针异常
try / on / catch块
可能发生的异常代码块,嵌入代码,需要指定异常类型,try语句后边必须跟一个on语句或者一个finally语句;catch语句可以携带俩个参数,第一个参数为抛出的异常对象,第二个参数为堆栈信息;
代码示例
try {
// 可能引发异常的代码
}
on Exception1 {
// 用于处理异常的代码
}
catch Exception2 {
// 用于处理异常的代码
}
finally语句,跟java中的一样,不管有没有抛出异常,都会执行的语句;
try {
// code that might throw an exception
}
on Exception1 {
// exception handling code
}
catch Exception2 {
// exception handling
}
finally {
// code that should always execute; irrespective of the exception
}
抛出异常
thorw关键字用于抛出异常,处理发生的异常,防止程序异常退出;
代码示例
//简单的对象抛出异常
throw 'this is error...';
//系统自定义异常
throw new FormatException('转换异常...');
自定义异常
Dart中每个异常类型都是内置类Exception类的子类型,Dart可以通过扩展现有异常来创建定义异常类型,
导包:
- import 导入一个库 library用于定义一个库 export 包导出
- as 指定前缀命名空间
- show 关键字指定导入的函数
- hide 关键字指定不需要导入的函数
import 'package:lib1/lib1.dart';
import 'package:lib2/lib2.dart' as lib2;
//如果你导入的两个库具有冲突的标识符, 则你可以使用库的前缀来区分。 例如,如果 library1 和 library2 都有一个名字为 Element 的类
//Uses Element from lib1.
Element element1 = new Element();
// Uses Element from lib2.
lib2.Element element2 = new lib2.Element();
//Import only foo.
//import 'package:lib1/lib1.dart' show foo;
//Import all names EXCEPT foo.
//import 'package:lib2/lib2.dart' hide foo;
网友评论