&引用;“取消嵌套”;Java中的Try/Catch块
在我学习和更好地理解Java的过程中,有人告诉我,让代码像下面那样嵌套通常是一种不好的做法。我的问题是如何使它执行相同的功能,同时使它更易于阅读。谢谢&引用;“取消嵌套”;Java中的Try/Catch块,java,nested,try-catch,Java,Nested,Try Catch,在我学习和更好地理解Java的过程中,有人告诉我,让代码像下面那样嵌套通常是一种不好的做法。我的问题是如何使它执行相同的功能,同时使它更易于阅读。谢谢 class Test { public static void main(String[] args) { try { int zero = 0; int y = 2/zero; try { Object s = nul
class Test {
public static void main(String[] args) {
try {
int zero = 0;
int y = 2/zero;
try {
Object s = null;
System.out.println(s.toString());
}
catch(NullPointerException e) {
System.out.println(e);
}
}
catch(ArithmeticException e) {
System.out.println(e);
}
}
}
这完全取决于你想在哪里捕捉错误。如果要在一个catch块中捕获两种不同类型的异常,请使用
操作符
try {
}catch(NullPointerException | ArithmeticException e) {
}
如果您想要两个不同的捕捉块,只需添加另一个
try {
}catch(NullPointerException npe) {
}catch(ArithmeticException ae) {
}
对于引发异常的方法/实例,或者如果选择引发新异常,则必须使用try/catch。
但这完全取决于你想在哪里捕捉错误。当抛出异常时,将跳过抛出异常后的try块中的所有代码,并且连接到该try块的catch块将触发您可以在单个try语句的末尾添加多个catch语句,例如
catch(NullPointerException e) {
System.out.println(e);
}
catch(ArithmeticException e) {
System.out.println(e);
}
例如,您可以通过这样编写来删除一个try/catch,而不是在另一个try/catch中包含一个try/catch
try {
int zero = 0;
int y = 2/zero;
Object s = null;
System.out.println(s.toString());
} catch(NullPointerException e) {
System.out.println(e);
} catch(ArithmeticException e) {
System.out.println(e);
}
这当然更具可读性,但并不一定更好。这取决于您的用例
你不能这样做
try {
int zero = 0;
int y = 2/zero;
Object s = null;
try {
System.out.println(s.toString());
} catch(NullPointerException e) {
System.out.println("'s' was null, creating a new 's'");
s = new Object();
}
System.out.println(s.toString());
} catch(ArithmeticException e) {
System.out.println(e);
}
你为什么不贴一个你觉得嵌套太深的实际例子呢。重构无用的代码是非常困难的pointless@VBCPP这是正确的。在某些情况下,您可能必须进行嵌套,或者有时只编写多个单独的try-catch。伪代码不会帮助我们帮助您,而且您关于嵌套try块的假设是不正确的,有时您可能需要它们。