【发布时间】:2013-11-09 01:28:26
【问题描述】:
我有一个解析几个不同输入文件的 Java 程序。即使在此输入文件中发现错误,解析仍然可以继续并收集其他几个错误。所以我想做的不是抛出异常和停止解析过程,而是将异常注册到某个地方,然后继续解析并以类似的方式收集其他几个错误,然后最后我想检查是否报告任何错误,并根据此情况失败或继续。
当然,我总是可以通过编写 ExceptionRegister 或任何类来手动执行此操作,但我想知道两件事:
1) 这种方法有问题吗?你知道我想做的任何替代设计吗?
2) 有标准的方法吗? (例如,如果可能,我想使用内置功能,而不是滚动我自己的类)
谢谢
编辑:我不知道为什么,但在我接受他的答案之前,有人刚刚删除了他的答案。无论如何,我认为简单的数据结构应该可以工作。基本上,我将编写一个异常类来收集多个错误消息。然后我将它称为 throw 方法,如果它至少注册了一条错误消息,就会抛出自己。
EDIT2:这里有更多说明。我的问题与解析无关。解析只是一个例子,因为我的程序做了一些解析。想一想:我正在运行一个算法,如果出现错误,我可以继续该算法以收集更多错误,这样我就可以将这两个错误一起打印,而不是打印一个错误,当它修复后,打印第二个错误。
【问题讨论】:
-
重新编辑:为什么在这种情况下需要扩展
Exception? -
我删除了它,因为您告诉我问题不在于解析输入文件中的异常堆栈跟踪。我根据您(显然)真正提出的问题创建了一个新答案。
-
不是专门的 Java 答案,但您可能正在寻找的类型是应用函子。 Scalaz 库提供了一个名为 Validation 的库。
标签: java exception exception-handling