exception.getMessage()
方法在NullPointerException
引发时遇到问题,返回null
如何在不更改JRE的情况下覆盖基础Exception.getMessage()
来控制它?
答案 0 :(得分:1)
尝试:
public class MyException extends Exception {
public MyException(String message) {
super(message);
}
public MyException(Throwable throwable) {
super(throwable);
}
public MyException(String message, Throwable throwable) {
super(message, throwable);
}
}
抛出MyException一个程序。
try {
} catch (NullPointerException e) {
throw new MyException("My exception message", e);
or
throw new MyException("My exception message");
or
throw new MyException(e);
}
抓住MyException另一个程序。
try {
} catch (MyException e) {
System.out.println(e.getMessage());
}
答案 1 :(得分:1)
当nullPointerException.getMessage()
返回null
时,现在会将消息传递给其构造函数。
由于您可以创建自己的Exception
(但我无法理解为什么),您也可以使用短信生成NullPointerException
:
if (something == null) {
// here you may want to log another data
throw new NullPointerException("mandatory value 'something' is NULL");
}
请注意,两种方式都假设您可以更改来源。如果NullPointerException
生成在标准类的某个位置(HashMap
中的fe),则需要通过调试器和/或读取该类的源来调查为什么。
答案 2 :(得分:1)
如果您正在设计方法以抛出NullPointerException,则可以在throw子句中构造NullPointerException对象
例如,您的方法名称为nullPointer。
public void nullPointer() throws NullPointerException{
do something;
throw new NullPointerException("I am a new null pointer exception");
}
如果您的代码本身意外地生成了此类异常,则需要检查代码的逻辑以防止此类异常。
答案 3 :(得分:0)
public class MyException extends Exception {
public MyException(String message) {
super(message);
}
@Override
public String getMessage() {
return "";
}
}
答案 4 :(得分:0)
您是否看到了Exception.java
public Exception(String message) {
super(message);
}
您需要做的就是在抛出异常时添加错误消息。
或者如果你想自定义你的异常类扩展Exception.java
,请添加相应的构造函数,如:
public class MyException extends Exception {
public MyException(String message) {
super(message);
}
}