Java:在 catch block 内抛出异常

标签 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 block 来做到这一点吗?在 try block 内,我将尝试初始化数组,在 catch 内,我将抛出 IllegalArgumentEception。

最佳答案

你可以按照你的想法做,但我会注意两点:

  • 捕获任何异常而不是特定异常

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

例如:

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

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

关于Java:在 catch block 内抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49497872/

相关文章:

java - 使用 charAt 和 while 循环 Java 查找字符串中的字母

c# - "throw new.."未处理的异常,最佳做法是什么?已经处理了

java - 如何忽略 Java 中的异常

Java - 可抛出异常

java - PatternSyntaxException 可能有多种原因吗?

java - 集中式日志记录 - 跨服务器关联消息

java - 阐明 Java 对 Unicode 的进化支持

java - 为什么在 Eclipse 中初始化 Java Tooling 时出现 NullPointerException?

java - Android:静态变量和移动复杂数据

java - 收集Java应用程序中的异常报告