Flutter学习笔记(7)--Dart异常处理
程序员文章站
2022-05-29 10:19:37
异常是表示发生了意外的错误,如果没有捕获异常,引发异常的隔离程序将被挂起,并且程序将被终止; Dart代码可以抛出并捕获异常,但与java相反,Dart的所有异常都是未检查的异常,方法不声明它们可能抛出哪些异常,也不需要捕获任何异常; Dart提供了异常和错误类型以及许多预定义的子类型,当然,也... ......
如需转载,请注明出处:flutter学习笔记(7)--dart异常处理
异常是表示发生了意外的错误,如果没有捕获异常,引发异常的隔离程序将被挂起,并且程序将被终止;
dart代码可以抛出并捕获异常,但与java相反,dart的所有异常都是未检查的异常,方法不声明它们可能抛出哪些异常,也不需要捕获任何异常;
dart提供了异常和错误类型以及许多预定义的子类型,当然,也可以定义自己的异常,然而,dart成语可以抛出任何非空对象;
-
抛出异常
下面是一个抛出或引发异常的例子:
throw formatexception('抛出一个formatexception异常'); //你也可以抛出任意对象 throw '数据非法!';
-
捕获异常
你可以指定一个或两个参数来捕获异常(catch),第一个是抛出的异常,第二个是堆栈跟踪(stacktrace对象)。如下面代码所示:
try{ //逻辑代码操作 } on exception catch (e){ print('exception details:\n $e'); }catch (e,s){ print('exception details:\n $e'); print('stack trace:\n $s'); } //上面的代码第一个catch用来捕获异常详细信息,第二个catch是堆栈跟踪信息
-
finally
要确保某些代码能够运行,无论是否抛出异常,请使用finally子句,如果没有catch子句匹配异常,则异常在finally子句运行后传播,如下面代码所示,在最下面加上了finally语句:
try{ //逻辑代码操作 } on exception catch (e){ print('exception details:\n $e'); }catch (e,s){ print('exception details:\n $e'); print('stack trace:\n $s'); }finally{ print(''do sth); }
下一章节:flutter学习笔记(8)--dart面向对象