为了账号安全,请及时绑定邮箱和手机立即绑定

为什么不允许仅尝试块?

为什么不允许仅尝试块?

叮当猫咪 2021-06-28 20:50:41
为什么在 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 块是非常罕见的,因此不值得将其作为特殊的“非空块”语法元素。


查看完整回答
反对 回复 2021-06-30
?
手掌心

TA贡献1942条经验 获得超3个赞

简单的答案是“因为这就是语言的定义方式”。

当然,他们本可以决定一个裸体try { ... }有一个假设的空finally,但这相当于根本没有try,那么何必呢?


查看完整回答
反对 回复 2021-06-30
  • 2 回答
  • 0 关注
  • 118 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信