假设我有方法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。
答案 0 :(得分:2)
你可以按照自己的想法去做,但我会小心两点:
捕获任何异常而非特定异常
通过包装捕获的异常来抛出IllegalArgumentException
。拥有完整的stracktrace可能有助于调试
例如:
try{
...
}
catch (Exception e){
throw new IllegalArgumentException("exception during combine() invocation with params..." , e);
}
请注意,实际上不需要在方法声明中声明throws IllegalArgumentException
,因为客户端没有任何约束来处理它:它是RuntimeException
。
就像为一个可以抛出它的方法声明throws NullPointerException
一样
如果要约束客户端来处理异常,请使用选中的Exception
。