如何检查异常的类型以及嵌套异常的类型?
假设我捕获了一个 AppException
类型的异常,但我只想在该异常具有 StreamException
类型的嵌套异常时对该异常执行某些操作。
if (e instanceof AppException)
{
// only handle exception if it contains a
// nested exception of type 'StreamException'
如何检查嵌套的 StreamException
?
Suppose I catch an exception that is of type AppException
but I only want to carry out certain actions on that exception if it has a nested exception of type StreamException
.
if (e instanceof AppException)
{
// only handle exception if it contains a
// nested exception of type 'StreamException'
How do I check for a nested StreamException
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
也许您可以尝试为特定目的对 AppException 进行子类化,而不是检查原因。
例如。
您也可以在 java 的其他地方找到这种模式。一个是示例 IOException。它是许多不同类型 IOException 的超类,包括但不限于 EOFException、FileNotFoundException 和 UnknownHostException。
Maybe instead of examining the cause you could try subclassing AppException for specific purposes.
eg.
You can find this pattern else where in java too. One is example IOException. It is the superclass for many different types of IOException, including, but not limited to EOFException, FileNotFoundException, and UnknownHostException.
执行:
if (e instanceof AppException 和 e.getCause() instanceof StreamException)
。Do:
if (e instanceof AppException and e.getCause() instanceof StreamException)
.