为什么不允许仅尝试块?

为什么在 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{} 块什么也不做


叮当猫咪
浏览 119回答 2
2回答

慕斯709654

"try/catch", "try/catch/finally" 和 "try/finally" 的意思“试着做点什么,如果失败了就……”“尝试做某事,如果失败就做……然后再做……”“尝试做某事,然后再做……”分别。单独尝试仅意味着“尝试做某事”-它隐含在所有代码中,这是您想要尝试做的事情;所以你不需要像 a 这样的任何多余的东西try来表达它。如果您只是想将语句放在它们自己的块中,例如将变量范围限定在该块中,您总是可以省略try.就您为什么finally允许空块的问题而言:它只是finally应该跟一个块,并且块没有语句是有效的。您应该希望有一个空的 finally 块是非常罕见的,因此不值得将其作为特殊的“非空块”语法元素。

手掌心

简单的答案是“因为这就是语言的定义方式”。当然,他们本可以决定一个裸体try { ... }有一个假设的空finally,但这相当于根本没有try,那么何必呢?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java