flutter - 建议 on 和 catch 的排列顺序是什么?
问题描述
在 on 和 Catch 之间,哪个先执行,推荐什么顺序?
void doSomeApiCall() {
try {
//make http request
} on SocketException {} catch (e) {
//do something.
}
}
应该先来后抓?有推荐的顺序或方法吗?订单对代码有什么影响?
解决方案
on
子句按顺序处理,第一个匹配抛出异常类型的子句将被执行。如果异常与任何子句都不匹配,则将执行裸catch
子句(即不带) 。on
on
您无法选择 and 之间的相对on
顺序catch
;试图将子句放在catch
子句之前on
将是语法错误。
注意写作:
void doSomeApiCall() {
try {
//make http request
} on SocketException {} catch (e) {
//do something.
}
}
不同于:
void doSomeApiCall() {
try {
//make http request
} on SocketException catch (e) { // No empty block before `catch`.
//do something.
}
}
第一个版本捕获 throws SocketException
,但空块对它们没有任何作用。裸catch
子句捕获所有其他抛出的异常并执行该//do something
块。
第二个版本//do something
只对被捕获SocketException
的块执行块,其他所有异常都不会被捕获。
另外,请注意,不鼓励使用裸catch
子句 withouton
。
推荐阅读
- amazon-web-services - Aws s3 文件名未在回显函数中使用批处理文件打印
- swift - 来自多个值的唯一数组
- python - 使用 Twisted Web Client 发布具有多个参数的请求
- azure - 使用 Azure AD 的 Springboot+Oauth 客户端凭据授予流程
- html - 我怎样才能使一个 div 进入中心
- c - ffmpeg - 缺少 avformat 标头
- flutter - Flutter Media Query MediaQuery.of(context).size.height 没有给出准确的高度或宽度。从谷歌得到
- r - 在R中将变量条件分配给数据框
- git - 如何复制一个分支和其中的所有数据?
- javascript - React forwardRef - 类型 IntrinsicAttributes 上不存在属性