如何从方法中正确处理异常?
How to handle Exception properly from a method?
假设,我有一个方法:
private void someMethod() {
try {
//Do something here
}
catch (NullPointerException ex) {
System.out.println("error");
}
}
现在,我想在其他地方使用这个方法:
private void newMethod() {
someMethod();
JOptionPane.showMessageDialog(null, "Exception didn't occur");
}
现在,我希望如果 someMethod()
发生异常,那么 newMethod()
将不会继续前进,我的意思是,在这种情况下不会显示 JOptionPane
消息。
最好的方法是什么?我找到了一种方法,在 someMethod()
的 catch 块中抛出另一个 NullPointerException
,然后从 newMethod()
处理它。下面的代码演示了:
private void someMethod() {
try {
//Do something here
}
catch (NullPointerException ex) {
System.out.println("error");
throw new NullPointerException("error");
}
}
private void newMethod() {
try {
someMethod();
JOptionPane.showMessageDialog(null, "Exception didn't occur");
}
catch (NullPointerException ex) {
System.out.println("error");
}
}
但是,通过这种方法,我在处理其他情况时遇到了一些困难。我想有更好的方法可以实现这一目标。还是谢谢了。
您不需要处理 someMethod
中的异常。相反,您可以在此方法的 throws
子句中声明异常(如果它是已检查的异常)并让 newMethod
处理它。
private void someMethod() throws SomeCheckedException {
//Do something here
}
如果是NullPointerException,则不需要执行上述操作,因为它是一个未经检查的异常。不要在 someMethod
中捕获它,而是在 newMethod
.
中使用 try-catch
如果您的函数打算抛出异常,最好将其作为函数声明的一部分。所以建议是把someMethod()
改成private void someMethod() throws <exception Name>
。
根据您的要求,您可以在相同的方法中处理异常并抛出另一个异常,或者重新抛出相同的异常并在另一个函数中处理它。
如果您重新抛出相同的异常,语法如下:
private void someMethod() throws WhateverException {
try {
//Do something here
}
catch (WhateverException e) {
throw e;
}
}
假设,我有一个方法:
private void someMethod() {
try {
//Do something here
}
catch (NullPointerException ex) {
System.out.println("error");
}
}
现在,我想在其他地方使用这个方法:
private void newMethod() {
someMethod();
JOptionPane.showMessageDialog(null, "Exception didn't occur");
}
现在,我希望如果 someMethod()
发生异常,那么 newMethod()
将不会继续前进,我的意思是,在这种情况下不会显示 JOptionPane
消息。
最好的方法是什么?我找到了一种方法,在 someMethod()
的 catch 块中抛出另一个 NullPointerException
,然后从 newMethod()
处理它。下面的代码演示了:
private void someMethod() {
try {
//Do something here
}
catch (NullPointerException ex) {
System.out.println("error");
throw new NullPointerException("error");
}
}
private void newMethod() {
try {
someMethod();
JOptionPane.showMessageDialog(null, "Exception didn't occur");
}
catch (NullPointerException ex) {
System.out.println("error");
}
}
但是,通过这种方法,我在处理其他情况时遇到了一些困难。我想有更好的方法可以实现这一目标。还是谢谢了。
您不需要处理 someMethod
中的异常。相反,您可以在此方法的 throws
子句中声明异常(如果它是已检查的异常)并让 newMethod
处理它。
private void someMethod() throws SomeCheckedException {
//Do something here
}
如果是NullPointerException,则不需要执行上述操作,因为它是一个未经检查的异常。不要在 someMethod
中捕获它,而是在 newMethod
.
如果您的函数打算抛出异常,最好将其作为函数声明的一部分。所以建议是把someMethod()
改成private void someMethod() throws <exception Name>
。
根据您的要求,您可以在相同的方法中处理异常并抛出另一个异常,或者重新抛出相同的异常并在另一个函数中处理它。
如果您重新抛出相同的异常,语法如下:
private void someMethod() throws WhateverException {
try {
//Do something here
}
catch (WhateverException e) {
throw e;
}
}