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