从变量中抛出异常
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从变量中抛出异常相关的知识,希望对你有一定的参考价值。
使用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的类。
答案
你可以简单地抓住Exception
抛出的someMethod()
,然后用你想要的信息重新抛出它。
就像是,
try {
someMethod();
} catch(Exception ex) {
/* Optional: Log Error */
Logger.error(..., ex);
throw new Exception("Error Occurred While Processing Request.", ex);
}
如果需要,您还可以创建并抛出一个已检查的异常,如下所示,
自定义异常类:
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);
}
另一答案
而不是捕捉Throwable
(这几乎总是一个错误),你可以创建一个自定义的RuntimeException
并包装你捕获的异常。
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);
}
以上是关于从变量中抛出异常的主要内容,如果未能解决你的问题,请参考以下文章