[英]Java: Throwing exception inside the catch block
可以说我有一个方法combine
T[] combine(T[] arr1, T[] arr2, Comparator<T> cmp, Class<?> type) throws IllegalArgumentException{
...
}
在其中,我想使用反射创建一个数组。 T[] newArray = (T[]) Array.newInstance(type, arr1.length+arr2.length);
。 如果在初始化newArray
期间出现错误,我想抛出new IllegalArgumentExeption()
。
我应该如何做呢? 我可以尝试捕获块吗? 在try块中,我将尝试初始化数组,在catch中,将抛出IllegalArgumentEception。
您可以按照预期进行操作,但是我要注意两点:
捕获任何异常而不是特定异常
通过包装捕获的异常引发IllegalArgumentException
。 拥有完整的stracktrace可能有助于调试
例如 :
try{
...
}
catch (Exception e){
throw new IllegalArgumentException("exception during combine() invocation with params..." , e);
}
注意,实际上不需要在方法声明中声明throws IllegalArgumentException
,因为客户端没有任何约束来处理它:它是RuntimeException
。
就像声明为可以抛出它的方法throws NullPointerException
一样。
如果要约束客户端处理该异常,请使用选中的Exception
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.