我有一个自己的异常,即InputException。
当它没有被捕获时,JVM会向控制台写入堆栈跟踪。
public static void main(String[] args) throws InputException{
throw new InputException();
}
JVM写入控制台。
线程中的异常" main" InputException 在test.Main.main(Main.java:8)
如何更改此消息,InputException的哪个方法生成此stackTrace?
答案 0 :(得分:3)
throw new InputException("your message here");
所以你必须在你的异常类中创建一个带有字符串参数调用super的构造函数:
public class InputException extends Exception {
public InputException(String message) {
super(message);
}
}
控制台上打印的消息是getMessage()
方法返回的消息,默认情况下返回传递给Throwable
构造函数的消息。
答案 1 :(得分:2)
AFAIK无法更改Exception in thread [threadName] [className] at [codeLine]
。
相反,您可能希望捕获异常,处理它并将一些简洁的消息输出到控制台(或记录器)。
答案 2 :(得分:1)
重载InputException
public InputException(String message) {
super(message);
}
然后使用它
throw new InputException("an input exception has occurred");
答案 3 :(得分:1)
JVM内部调用printStackTrace()
方法(因为您没有覆盖它,因此将调用Throwable
类实现。)
累计到Throwable#printStackTrace
第一行输出包含此对象的toString()方法的结果。剩余行表示以前通过方法fillInStackTrace()
记录的数据
如果您不想要这种表示,那么您可以在自定义异常类中覆盖printStackTrace()
方法,否则您可以在创建其对象时将String消息作为构造函数参数传递。
答案 4 :(得分:0)
您可以使用应打印的消息重载Exception
构造函数,例如
public InputException(String message) {
super(message);
}
然后按如下方式抛出异常:
throw new InputException("message");
请查看Java documentation,告诉我们为什么要这样做。