我有一個要求趕上RunTimeException。投擲前更改異常原因消息?
catch (RuntimeException ex) {
//here i can get message using ex.getMessage();
}
在這裏,我可以得到使用ex.getMessage()異常消息。但我不希望這個消息被返回給客戶。我必須改變這個消息並返回。 但是沒有setter方法來改變消息。 是否可以更改運行時異常消息?
謝謝!
我有一個要求趕上RunTimeException。投擲前更改異常原因消息?
catch (RuntimeException ex) {
//here i can get message using ex.getMessage();
}
在這裏,我可以得到使用ex.getMessage()異常消息。但我不希望這個消息被返回給客戶。我必須改變這個消息並返回。 但是沒有setter方法來改變消息。 是否可以更改運行時異常消息?
謝謝!
是的,這是可能的。拋出新的RuntimeException
傳遞您的自定義消息。
使用構造public RuntimeException(String message, Throwable cause)
構造帶指定詳細消息和原因的新的運行時異常。
catch (RuntimeException ex) {
throw new RuntimeException("Custome message", ex);
}
Suresh,我不能改變ex的消息並返回相同的值而不是拋出新的運行時異常嗎?謝謝! – user755806
不,你不能設置消息。 –
然後,我鬆開了我的原始堆棧跟蹤權利? – user755806
你可以創建你自己的自定義異常,當運行時異常發生時,你可以用適當的消息拋出你的自定義異常。
public class MyException extends Exception {
public MyException(String message) {
super(message);
}
}
catch (RuntimeException ex) {
throw new SomeNewException(<Your message>);
}
或
catch (RuntimeException ex) {
throw new RuntimeException(<Your message>);
}
public class SomeNewException extends Exception {
public SomeNewException(String message) {
super(message);
}
…..
…..
…..
}
我不能更改ex的消息並返回相同的值,而不是拋出新的運行時異常?因爲如果我拋出新的運行時異常,那麼我鬆散的堆棧跟蹤。謝謝! – user755806
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("your message here");
}
catch (RuntimeException ex)
{
//here i can get message using ex.getMessage();
throw new RuntimeException("Your message here.");
}
問:是否有可能改變的......異常的消息?答:當然可以:1)抓住原始異常,2)創建並拋出一個新的,不同的例外。 – paulsm4
使用具有良好含義的消息創建自定義異常並將它們返回給客戶端 –
無法更改ex的消息並返回相同的消息而不是拋出新的運行時異常?因爲如果我拋出新的運行時異常,那麼我鬆散的堆棧跟蹤。謝謝! – user755806