繁体   English   中英

Java:在catch块内引发异常

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM