gpt4 book ai didi

java异常arraylist迭代

转载 作者:行者123 更新时间:2023-11-30 09:37:51 25 4
gpt4 key购买 nike

我有一个专门为系统 x 的 hadling 通知而创建的类。现在我在系统x中进行操作时,可能会产生n个异常。我创建我的通知类中的 ArrayList 用于存储所有这些异常。我稍后想迭代那个列表以检查各种类型的异常。例如。我想迭代并查看是否有异常sqlConnection发生,然后为下一个可能是SQL查询的异常,等等。

如何实现?思路是这样的:

if exception for sqlconnection was found
exceptionMessage += "Connection Failed";
if exception for whatever was found
exceptionMessage += "whatever exception"

etc...

谢谢,

最佳答案

我可以想到很多方法来做到这一点:

1) 您可以使用instanceof 来区分不同类型的异常;例如

if (e instanceof Exception) {
if (e instanceof IOException) {
if (e instanceof FileNotFoundException) {
...
} else ...
} else ...
} else ...

2) 您可以使用 map 进行区分;例如

Map <Class, Integer> map = new HashMap<Class, Integer>();
map.put(FileNotFoundException.class, 1);
map.put(NullPointerException.class, 2);
...

Integer action = map.get(ex.getClass());
if (action != null) {
switch(action) {
case 1:
....
case 2:
...
}
}

3) 在Java 7中,您可以通过切换异常类的名称来区分。

4) 在 Java 7 中(或者更早的 Java 版本……虽然 '|' 是 Java 7 主义)你可以抛出异常并使用 try {} catch 来区分它.

Throwable ex = ...
try {
throw ex;
} catch (IOException | InvalidArgumentException e) {
...
} catch (NullPointerException e) {
...
} catch (Throwable e) {
// catch all
}

(最后一个选项可以说是“对正常控制流使用异常”......但我相信它应该具有与其他选项相当的性能。使用异常的大部分成本是在创建异常时产生的例如,我们没有这样做。我们正在重新抛出之前创建的异常。)

关于java异常arraylist迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10360919/

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