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的异常处理方法,了解常见异常的处理方法以及异常的基本概念。
相关文章
- Shell入门教程:流程控制(4)case 条件判断
- Destoon二开必看执行流程
- Go语言基础之流程控制
- 流程控制库async
- Atitti cto的日常流程与职责attilax总结
- 流程控制
- PowerManagerService之自动灭屏流程解析
- 【面试1】Springboot启动流程分析原理(一)
- 〖Python零基础入门篇㉙〗- Python中的流程控制与条件判断
- 【MATLAB】流程控制 ( 循环结构 | for 循环 | while 循环 | 分支结构 | if end 分支结构 | if else end 分支结构 | switch case 分支结构 )
- java新手练习 流程控制break 标签
- 22.第六章 Shell脚本编程基础入门 -- bash配置文件、流程控制(五)
- (2022版)一套教程搞定k8s安装到实战 | TLS Bootstrap初始化流程
- 定制dmi信息的具体流程及相关知识
- Java学习笔记(四)——流程控制语句
- elasticsearch indices.recovery 流程分析(索引的_open操作也会触发recovery)——主分片recovery主要是从translog里恢复之前未写完的index,副分片recovery主要是从主分片copy segment和translog来进行恢复
- Java基础(12)-流程控制之选择结构
- Tcl 语言——流程控制篇
- Shell 流程控制
- Kafka 重平衡流程
- 【快速入门大数据】第一部分:Java基础知识回顾之语言基础01:开发环境配置、数据类型、运算符、流程控制
- shell脚本if流程控制详解
- android5.1蓝牙反向控制(Avrcp协议)流程