Java:在catch块中抛出异常

时间:2018-03-26 18:06:15

标签: java exception

假设我有方法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块吗?在try块中,我会尝试初始化数组,在catch中我会抛出IllegalArgumentEception。

1 个答案:

答案 0 :(得分:2)

你可以按照自己的想法去做,但我会小心两点:

  • 捕获任何异常而非特定异常

  • 通过包装捕获的异常来抛出IllegalArgumentException。拥有完整的stracktrace可能有助于调试

例如:

try{
...
}
catch (Exception e){
    throw new IllegalArgumentException("exception during combine() invocation with params..." , e);
}

请注意,实际上不需要在方法声明中声明throws IllegalArgumentException,因为客户端没有任何约束来处理它:它是RuntimeException。 就像为一个可以抛出它的方法声明throws NullPointerException一样 如果要约束客户端来处理异常,请使用选中的Exception