Java 未处理的异常

标签 java android-studio exception compiler-errors

我目前正在使用 Android Studio 开发 Android 应用程序,但遇到了一个我无法理解的错误。这是我的代码示例:

public class MyClass {

    public void method1() throws MyException {
        methodIO();     // Unhandled Exception: java.io.IOException
        methodRun();    // OK
    }

    public void method2() throws Exception {
        methodIO();     // OK
        methodRun();    // OK
    }

    public void methodIO() throws IOException {}

    public void methodRun() throws RuntimeException {}
}

class MyException extends Exception {

    public MyException(){super();}

    public MyException(String message, int errorCode) {
        super(message);
    }
}

我不明白为什么在 method1() 中,出现以下错误“未处理的异常:java.io.IOException”,而 method2() 编译正常。即使两个类都是从 Exception 继承的,抛出 RuntimeException 的方法也不会出现此问题。有人知道这里发生了什么事吗?

Ps:我想避免使用 try/catch block 或添加新的 throws 子句

最佳答案

MyException 不会扩展 IOException,因此当前不会处理 methodIO 抛出的 IOException

它在method2中工作,因为ExceptionIOExceptionMyException的公共(public)父类(super class),所以它指定了如何两种类型的异常都应该被处理。

将其添加到method1throws子句中:

public void method1() throws MyException, IOException {

或者在方法体中捕获:

public void method1() throws MyException {
  try {
    methodIO();
  } catch (IOException e) {
    // Handle appropriately.
  }
}

关于Java 未处理的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34793423/

相关文章:

java - Java 文件读写

java - == 带字符串的运算符

单击按钮时的 Java Graphics repaint()

java - 我们如何使用java中的接口(interface)来实现抽象?

java - AS 2.3.3、Gradle 3.3、Java 1.8 无法解析 java.time.format.DateTimeFormatter 的导入;

android - HAXM安装成功,但Android Studio 2.1无法识别

java - 我有一个在所有项目中重复使用的类。我应该把它变成一个库组件吗?

exception - 来自 Google Analytics Analytics.js 异常跟踪的异常报告

c# - IndexNotFoundException 与 NullReferenceException

javascript - Node.js 中的异常处理程序