在 Java 中抛出异常的链接列表
2022-09-02 09:56:04
我有一个函数,它在执行可能引发异常的事情时循环。看起来像这样:
public void myFunction() throws MyException {
while(stuff) {
try {
DoSomething() // throws an exception
}
catch (Exception ex) {
throw new MyException(some, stuff, of, mine, ex);
}
}
}
导致异常的错误是可恢复的。它可以类似于单个更新语句中的 SQL 错误,其中 while 循环执行一系列更新语句。或者,单个数据片段中的解析错误,其中循环正在处理多条数据。我需要将异常进一步向上传递,以便程序的GUI部分可以处理它,处理它并将错误传递给用户。但我不想在这个特定函数中杀死循环。它正在做的其他事情可能不是无效的。导致异常的错误对函数可能不是致命的。
所以我的问题是:构建自定义异常的链接列表(其中每个异常都是一个节点,并且抛出的异常是列表的头部),然后在循环完成后抛出列表的头部(如果有)是否是一种可接受的做法?
有没有人见过这样做?有谁能想到这样做的任何潜在问题?有谁能想到其他更好的方法来处理根本问题:需要放弃多个不相关的异常,直到它完成才退出函数?
下面是如何非常简单地实现链接和抛出的示例:
public void myFunction() throws MyException {
MyException head = null;
while(stuff) {
try {
DoSomething() // throws an exception
}
catch (Exception ex) {
MyException tmp = new MyException(some, stuff, of, mine, ex);
tmp.next(head);
head = tmp;
}
}
if(head != null)
throw head;
}