我有一个如下所示的代码:
try {
if (resp.equals("a")) {
success(resp);
} else if (resp.equals("b")) {
throw new Exception("b error");
} else if (resp.equals("c")) {
throw new Exception("c error");
}
} catch (Exception e) {
dosomething(e.getMessage());
}
我的 catch 语句没有捕获错误...当我抛出 try block 之外的异常时,我是否做错了什么?
最佳答案
您的 if-else
block 都不会被执行,因为您在所有这些 block 中都使用 ==
来比较字符串。在这种情况下,try
block 根本不会抛出任何异常
。
使用equals
方法来比较所有情况下的字符串:
if (resp.equals("a"))
或者:
if ("a".equals(resp)) // Some prefer this, but I don't
第二种方法将避免NPE
,但通常我会避免使用这种方法,因为我不知道潜在的异常,并且以后可能会陷入陷阱。
关于Java 在 try block 内抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14860601/