检查嵌套异常中某个异常类型是否是原因(原因等)的最佳方法?
2022-09-01 04:10:47
我正在编写一些 JUnit 测试,以验证是否引发了类型的异常。但是,此异常多次被包装在其他异常中,例如在 InvocationTargetException 中,而 InvocationTargetException 又被包装在 RuntimeException 中。MyCustomException
确定MyCustomException是否以某种方式导致了我实际捕获的异常的最佳方法是什么?我想做这样的事情(见下划线):
try { doSomethingPotentiallyExceptional(); fail("Expected an exception."); } catch (RuntimeException e) { if (!e.
wasCausedBy(MyCustomException.class) fail("Expected a different kind of exception."); }
我想避免将几个“层”称为深,以及类似的丑陋的解决方法。有没有更好的方法?getCause()
显然,Spring有NestedRuntimeException.contains(Class),它做了我想要的 - 但我没有使用Spring。