Dig*_*pha -2 java try-catch kotlin
为什么在Kotlin中(除了在try-with-resources中,在Java中也是如此)仅写try {}块是不可能的?例如:
允许该功能
fun tryFunction(){
try{print("hello world!")}finally {}
}
Run Code Online (Sandbox Code Playgroud)
虽然这是不允许的
fun tryFunction(){
try{print("hello world!")} //build error "Expecting 'catch' or 'finally'"
}
Run Code Online (Sandbox Code Playgroud)
尽管第一个示例中的finally {}块没有任何作用
“尝试/捕获”,“尝试/捕获/最终”和“尝试/最终”的含义
尝试本身仅意味着“尝试做某事”-它在您想要尝试执行的所有代码中都是隐含的。因此您不需要像这样的多余东西就try可以表达出来。
如果只想将语句放在自己的块中(例如,将变量作用域限定在该块中),则始终可以省略try。
关于您为什么finally允许空块的问题:只需finally在其后跟随一个块,并且对于一个没有任何语句的块是有效的。完全罕见的是,您应该有一个空的finally块,因此不值得将其设为特殊的“非空块”语法元素。