我尝试在Java中创建自己的异常。
我有一个父类,如:
public class PException extends Exception {
public PException(String msg) {
super(msg);
}
}
和两个孩子班:
public class noGoalException extends PException {
public noGoalException(){
super("No Goal");
}
}
我称之为:
主要:
try {
Starter s = new Starter("res/init");
} catch (PException e) {
e.getMessage();
}
在我的方法中:
private void parseGoals() throws PException {
[...]
if (i == 0) {
throw new noGoalException();
}
}
和初学者:
public Starter(String fileName) throws GPException {
[...]
parseGoals();
}
我指定i = 0进行测试。
问题是我的异常从不抛出。有什么不对吗?
感谢您的帮助。
答案 0 :(得分:1)
像@Berger一样,评论中还包括:
而不是e.getMessage()
做:
try {
Starter s = new Starter("res/init");
} catch (PException e) {
System.out.println(e.getMessage());
}
或
try {
Starter s = new Starter("res/init");
} catch (PException e) {
e.printStackTrace();
}
如果仍然没有打印任何内容,请提供更多代码来自我的来源,以便我们可以检查为什么不会抛出错误。
答案 1 :(得分:0)
这不正确,这就是为什么抛出异常时什么也看不见的原因
try {
Starter s = new Starter("res/init");
} catch (PException e) {
e.getMessage();
}
e.getMessage()
returns a String这就是迷失在筹码中
改为:
System.out.println(e.getMessage());
在捕获
或只是致电e.printStackTrace()