我有一个设置,如......
public class MyClass {
Exception e = null;
try {
Game.runItNow();
} catch (Exception e) {
this.e = e;
}
if (this.e == null) {
showError();
}
}
public class Game {
public static void runItNow() throws IOException {
try {
HttpManager.getData()
} catch(IOException e) {
// here, e = null
throw e;
}
}
}
public class HttpManager {
public static String getData() throws IOException {
String someData = "The fox is brown";
String someWord = "fox";
if (someData.contains(someWord)) {
throw new IOException();
}
return someData;
}
}
问题是,当我捕获IO异常时.. e == null
。不确定我是否有大脑放屁,但我很困惑。为什么e == null
?我正在抛出一个新的实例。
答案 0 :(得分:0)
如果您上面的代码是您实际拥有的代码,那么难怪它不起作用。您的MyClass
不适合上课。您需要静态块,主方法或具有该代码的构造函数。
如果您使用该代码创建构造函数,或者使用main方法,那么它将正常工作。
public class MyClass {
public static void main(String[] args) {
Exception e = null;
try {
Game.runItNow();
} catch (Exception e) {
this.e = e;
}
if (this.e == null) {
showError();
}
}
}
答案 1 :(得分:-1)
您正在覆盖使用新IOException生成的IOException而没有例外。