Java 在抛出前更改异常原因消息?

Java 在抛出前更改异常原因消息?,java,exception-handling,Java,Exception Handling,我需要捕获RunTimeException catch (RuntimeException ex) { //here i can get message using ex.getMessage(); } 在这里,我可以使用ex.getMessage()获取异常消息。但我不想将此消息返回给客户。我必须更改此消息并返回。 但是没有setter方法来更改消息是否可以更改运行时异常的消息? 谢谢 您可以创建自己的自定义异常,当运行时异常捕获时,您可以抛出带有正确消息的自定义异常 public cla

我需要捕获RunTimeException

catch (RuntimeException ex) {

//here i can get message using ex.getMessage();
}
在这里,我可以使用ex.getMessage()获取异常消息。但我不想将此消息返回给客户。我必须更改此消息并返回。 但是没有setter方法来更改消息是否可以更改运行时异常的消息?


谢谢

您可以创建自己的自定义异常,当运行时异常捕获时,您可以抛出带有正确消息的自定义异常

public class MyException extends Exception {
    public MyException(String message) {
        super(message);
    }
}


如果要保留有关第一个异常的原始位置的信息,请使用以下命令:

catch (RuntimeException ex)
{
    //here i can get message using ex.getMessage();
    throw new RuntimeException("bla bla", ex);
}

是的,这是可能的。抛出一个新的
RuntimeException
传递自定义消息

使用构造函数

使用指定的详细信息和原因构造新的运行时异常

你喜欢这样吗

catch (RuntimeException ex) {    
        throw new RuntimeException("your message here");
}

问:有没有可能改变……的信息。。。例外?答:是的,当然:1)捕获原始异常,2)创建并引发您选择的新的、不同的异常。使用具有良好含义的消息创建自定义异常,并将其返回给客户端。我不能更改ex的消息并返回相同的消息,而不是引发新的运行时异常吗?因为若我抛出新的运行时异常,那个么我将丢失堆栈跟踪。谢谢Suresh,我不能更改ex的消息并返回相同的消息,而不是抛出新的运行时异常吗?谢谢不,您不能设置消息。@user755806是,为真。为此,我更新了我的帖子。现在你不会丢失stacktrace了。我不能更改ex的消息并返回相同的消息,而不是抛出新的运行时异常吗?因为若我抛出新的运行时异常,那个么我将丢失堆栈跟踪。谢谢
public class SomeNewException extends Exception {
    public SomeNewException(String message) {
        super(message);
    }
…..
…..
…..
}
catch (RuntimeException ex)
{
    //here i can get message using ex.getMessage();
    throw new RuntimeException("bla bla");
}
catch (RuntimeException ex)
{
    //here i can get message using ex.getMessage();
    throw new RuntimeException("bla bla", ex);
}
catch (RuntimeException ex) {

        throw new RuntimeException("Custome message", ex);

    }
catch (RuntimeException ex) {    
        throw new RuntimeException("your message here");
}
catch (RuntimeException ex)
{
    //here i can get message using ex.getMessage();
    throw new RuntimeException("Your message here.");
}