gpt4 book ai didi

Java:在 catch block 内抛出异常

转载 作者:行者123 更新时间:2023-12-02 02:14:29 27 4
gpt4 key购买 nike

假设我有一个方法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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com