我想知道为什么有一个空的try块然后捕获特定的异常是有意义的?有什么想法吗?
try {
} catch (Exception e) {
// do nothing
}
答案 0 :(得分:7)
这个想法是任何代码都可以抛出未经检查的异常,所以如果你正在捕捉可以捕获未经检查的异常的东西,编译器不会检查{{ 1}}块可以抛出任何东西。在try块中确实存在 no 代码的特殊情况下,这是不合适的 - 但它使语言更简单,并且它只是完全伪造的代码中的问题,我不希望显示在任何真正的代码库中。我猜有类似的情况,你只是用原语等做事,但它确实是一个边缘情况。大多数try块将包含理论上会抛出未经检查的异常的代码。
如果您尝试捕获未在try
块中抛出的已检查异常类型,然后,编译器将会抱怨。
答案 1 :(得分:2)
运行时异常未经过类型检查,可能会被无法预测地抛出
答案 2 :(得分:2)
并非编译的所有内容都应该“有意义”,只要您的代码不包含语法和语义错误,它就会编译,甚至可能会运行。
主要思想是代码的每个部分都可能抛出异常。 Try Catch
块不会为编译的代码增加额外的开销,因此即使对于任何代码也没有问题。