zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Dart基础-控制流程与异常处理

2023-09-14 08:59:38 时间

switch通常用于整数、字符串和编译时常量的比较,比较的对象必须是同一类的实例,而不是任何子类型,每一个case必须用break结束。

在没有case匹配的情况下执行default的内容

var command = OPEN;

switch (command) {

 case CLOSED:

 executeClosed();

 break;

 case PENDING:

 executePending();

 break;

 case APPROVED:

 executeApproved();

 break;

 case DENIED:

 executeDenied();

 break;

 case OPEN:

 executeOpen();

 break;

 default:

 executeUnknown();

 }

下面例子中的case省略了break,因此产生了一个错误

var command = OPEN;

switch (command) {

 case OPEN:

 executeOpen();

 //错误:缺少break导致异常!

 case CLOSED:

 executeClosed();

 break;

}

然而,在case内容为空的情况下支持落空

var command = CLOSED;

switch (command) {

 case CLOSED:

 case NOW_CLOSED:

 executeNowClosed();

 break;

}

如果你真的希望落空,你可以使用continue继续执行

var command = CLOSED;

switch (command) {

 case CLOSED:

 executeClosed();

 continue nowClosed;

nowClosed:

 case NOW_CLOSED:

 executeNowClosed();

 break;

}

dart会抛出并捕获异常,异常表示一些意想不到的事情发生了,如果没有捕获异常,就会中断运行或程序结束,与java不同,dart的所有异常都是未经检查的,dart提供了Exception和Error类型,以及众多预定义的子类型,你也可以自己定义异常


代码可以有多个类型的异常处理,你可以指定多个异常处理,第一个catch子句处理异常对象的类型,如果catch子句没有指定异常类型,就处理所有异常类型

try {

 breedMoreLlamas();

} on OutOfLlamasException {

 //指定的异常

 buyMoreLlamas();

} on Exception catch (e) {

 //所有异常

 print(Unknown exception: $e);

} catch (e) {

 //没有指定类型,处理所有异常

 print(Something really unknown: $e);

}

看上面的代码,你可以使用on和catch或两者都用,使用on指定异常类型,使用catch给异常处理程序一个异常对象


确保代码的运行,不管是否抛出异常,使用finally子句,无论是否有匹配异常的catch子句,最终都执行finally子句

try {

 breedMoreLlamas();

} finally {

 //总是执行,即使抛出异常

 cleanLiamaStalls();

}

匹配任何异常catch子句后运行finally子句

try {

 breedMoreLlamas();

} catch(e) {

 //首先处理异常

 print(Error: $e);

} finally {

 //然后执行

 cleanLiamaStalls();

}

8 个示例理清宏任务微任务执行顺序 8 个示例理清宏任务微任务执行顺序 , 事件循环相信很多人都了解过,关于宏任务和微任务的介绍和执行顺序也有非常多的介绍,我
Python语法之异常处理 前面我们已经介绍了模块的创建和包的应用,在这一小节,我们将继续来学习Python的异常处理方法,了解常见异常的处理方法以及异常的基本概念。