Java如何覆盖Exception.getMessage

时间:2014-01-15 09:01:06

标签: java nullpointerexception override

exception.getMessage()方法在NullPointerException引发时遇到问题,返回null 如何在不更改JRE的情况下覆盖基础Exception.getMessage()来控制它?

5 个答案:

答案 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);
    }
}