freeCode@ITFlutterAndroid开发

Dart 之Exceptions异常

2019-04-21  本文已影响1人  youseewhat

Exceptions(异常)

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

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

Dart提供的异常类型:

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
上一篇下一篇

猜你喜欢

热点阅读