今天我写了一些类似于这样结构的Java:
if (someCondition) {
try {
doSomething();
} catch (SomeException e) {
handleException(e);
}
}
看起来有些难看,所以我决定删除多余的{}
- 阻止它。
if (someCondition) try {
doSomething();
} catch (SomeException e) {
handleException(e);
}
这使我认为try
关键字实际上是多余的。在catch
之后不是finally
或{}
- 阻止足以通知编译器/程序员块中抛出的异常有特殊处理吗?
编辑:澄清一下我并不是说整个try块都是多余的。只是try
关键字是。以上示例将写为:
if (someCondition) {
doSomething();
} catch (SomeException e) {
handleException(e);
}
编辑:这里要求的是一个不带if的示例方法:
public void someMethod() {
{
doSomething();
} catch (SomeException ex) {
handleException(e);
}
}
再次,明确没有try
关键字。
答案 0 :(得分:0)
根据Java语法: catch块应该按照java语法与try块相关联。 如果你不写try,只写catch块,那么java编译器会抛出错误。
为什么设计如此: 为什么我们需要将每个catch / finally块与try关联起来编写异常特定的代码,以便在异常的情况下执行相关的尝试块。
如果java被设计为在没有try块的情况下继续进行,那么程序员不知道要写入哪个特定代码catch块并最终在一个catch块中为所有类型的异常编写回退代码,从而导致执行任何catch块代码有点例外。
另外,根据您对catch块的放置的怀疑,如果您不编写try,那么catch块(如果由Java设计者设计)必须处理在其上面编写的整个代码中生成的异常,这导致了解释的场景在上一段。
所以,最好有代码可以生成异常并与catch块相关联,catch块可以有特定的代码来处理异常。这也是在try块之后编写多个catch块的相同目的,最具体或可能第一个catch块中的异常,并且在最后一个具有泛型catch异常块。
答案 1 :(得分:-1)
Try块让catch现在可以阻止他内部发生的事情。