因此,我基本上必须通过异常将应用程序的两个层彼此隔离。
我有这个WLST 12c脚本(python 2.2),如下所示
try:
something something...
except java.lang.UnsuportedOpperationException, (a, b):
pass
except java.lang.reflect.UndeclaredThrowableException, (a, b):
pass
我希望能够重新引发我自己的一种异常,它包含一条关于导致上一个异常的消息(不,我不知道a
和b
参数是什么,但我猜其中一个应该是异常描述)。
我自己也是个爪哇人,所以我期待着
try {
something something...
} catch (Exception e) {
throw new RuntimeException(e, "something horrible happened");
}
我希望我的问题是对的。
我不确定Python2.2的细节,但是this说您可以像在更新版本中那样处理异常:
或者最后一行应该是
raise ExceptionToThrow(str(e))
。这取决于如何定义异常。示例:这会引发
ValueError('foo')
。希望有帮助:)
成语
@normaldotcom所提到的重新抛出已按原样捕获的错误,而不做任何修改。它不会回答OP,“如何创建一个新的异常,该异常包含有关已捕获的异常的信息”。
实际上,在某些情况下,人们希望创建一个新的异常,通常是将许多可能的内部错误源重新组合为一个具有更清晰消息的异常,同时仍保留对原始错误的回溯以启用调试。
实现这一点的方法是通过^{} method of ^{} 。例如
虽然这是一篇老文章,但对于最初的问题有一个更简单的答案。若要在捕获异常后重新引发异常,只需使用“raise”而不带任何参数。原始堆栈跟踪将被保留。
相关问题 更多 >
编程相关推荐