使用Java,我想做类似的事情
try {
someMethod();
} catch (Throwable x) {
x.setMessage("Some comment " + x.getMessage());
throw x;
}
也就是说,我不知道会抛出什么“ someMethod”。无论是什么,我都想在其消息的开头添加一条消息,然后抛出错误。但是Throwable没有setMessage()方法。
我可以执行Class<? extends Throwable> cls = x.getClass();
来获取类类型,但是我不确定语法。我做不到
throw new cls("Comment " + x.getMessage());
我确信,当您不知道所抛出的throwable的类时,肯定会有一种相当简单的方法。
答案 0 :(得分:2)
您可以创建自定义Throwable
并在其中包装捕获到的异常,而不是捕获RuntimeException
(几乎总是/ em>错误)。
public class MyException extends RuntimeException {
public MyException(String message, Throwable cause) {
super(message, cause);
}
}
try {
someMethod();
} catch(Exception e) {
throw new MyException("A major error has occurred!", e);
}
答案 1 :(得分:0)
您可以简单地捕获Exception
抛出的someMethod()
,然后将其与所需的消息一起重新抛出。
类似
try {
someMethod();
} catch(Exception ex) {
/* Optional: Log Error */
Logger.error(..., ex);
throw new Exception("Error Occurred While Processing Request.", ex);
}
如果需要,您还可以如下创建并引发一个检查异常,
CustomException类:
public class CustomException extends Exception {
/* Optional: Add Serial UID */
public CustomException(String message, Throwable cause) {
super(message, cause);
}
public CustomException(Throwable cause) {
super(cause);
}
}
代码:
try {
someMethod();
} catch(Exception ex) {
/* Optional: Log Error */
Logger.error(..., ex);
throw new CustomException("Error Occurred While Processing Request.", ex);
}