为什么在 Kotlin 中(在 Java 中,除了 try-with-resources 的情况外)不可能只编写 try{} 块?例如:允许使用此功能fun tryFunction(){ try{print("hello world!")}finally {}}虽然这个是不允许的fun tryFunction(){ try{print("hello world!")} //build error "Expecting 'catch' or 'finally'"}尽管第一个示例中的 finally{} 块什么也不做
2 回答
慕斯709654
TA贡献1840条经验 获得超5个赞
"try/catch", "try/catch/finally" 和 "try/finally" 的意思
“试着做点什么,如果失败了就……”
“尝试做某事,如果失败就做……然后再做……”
“尝试做某事,然后再做……”分别。
单独尝试仅意味着“尝试做某事”-它隐含在所有代码中,这是您想要尝试做的事情;所以你不需要像 a 这样的任何多余的东西try
来表达它。
如果您只是想将语句放在它们自己的块中,例如将变量范围限定在该块中,您总是可以省略try
.
就您为什么finally
允许空块的问题而言:它只是finally
应该跟一个块,并且块没有语句是有效的。您应该希望有一个空的 finally 块是非常罕见的,因此不值得将其作为特殊的“非空块”语法元素。
手掌心
TA贡献1942条经验 获得超3个赞
简单的答案是“因为这就是语言的定义方式”。
当然,他们本可以决定一个裸体try { ... }
有一个假设的空finally
,但这相当于根本没有try
,那么何必呢?
添加回答
举报
0/150
提交
取消