java - 如何从方法中正确处理异常?

标签 java exception

假设,我有一个方法:

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 block 中抛出另一个 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。

关于java - 如何从方法中正确处理异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51758595/

相关文章:

java - 用于创建 pdf 的 pdfbox : how to do the text layout?

java - 给定一个class文件,如何检测它是否使用JNI?

java - 通过 Maven 部署 Solr 到 Tomcat

java - 使用 .children().get(22) OutOfBoundsException 时的 Jsoup

java - 如何从 Mono 创建 Flux

java - 由于索引处不透明部分中的非法字符,无法使用路径加载 keystore 类型 JKS

java - 为什么这里是 ExceptionInInitializerError?

c# - 帮助处理 InvalidCastException

ElasticsearchException 绑定(bind)服务失败错误

java - Logback 不会在 Spring Boot 的 @ExceptionHandler 中记录 ConstraintViolationException