Throw

Dart提供了和Java类似的异常系统,不过不需要方法声明它们可能抛出的异常,在Java中则必须声明。

void foo(){
  throw Exception("i am message");
}

Dart内置的异常类型和Java一样也分两种:Exception和Error。但是并不限制抛出这两种,你可以throw所有的非空对象。

throw 'haha';
throw 123;

不过上面的写法的可读性不是很好,为了代码质量考虑,Dart建议抛出内置的异常类型。

Catch

捕获一个异常:

try {
    //maybe throw a exception
} on RangeError catch (e) { 
	//会捕获到RangeError类型的异常
}

如果你不关心e,可以简写为:

try {
    //maybe throw a exception
} on RangeError {
	
}

如果没有on,则表示捕获所有异常类型:

try {
    //maybe throw a exception
} on RangeError catch (e) {

} catch (e){
    //会捕获到除了RangeError之外的所有异常
}

Finally

使用Finally来保证某些代码的执行,无论是否有异常发生:

try {
    //maybe throw a exception
} catch (e){
    //会捕获到除了RangeError之外的所有异常
} finally {
    //一定会执行的代码
}
更新时间: 4/27/2019, 8:54:35 PM