我必须每月浏览一次包含 150,000 多个项目的集合,并且发生的所有事情大约需要 3 到 4 个小时,这很好。问题是有时一些数据会抛出一个exception
(当然,这在我的第一次测试运行中没有发生,直到像项目 148,000 一样)。我只是将它设置为在逻辑上忽略异常(当然记录它),但我意识到我并不总是想简单地忽略异常。
我写了一个简单的异常处理程序,它处理不同类型的异常以及如果发生某种类型的异常该怎么办;例如,如果我得到一个SQLException
我会中止这个过程,但NullPointerException
我会继续,因为这通常是数据的问题。我还跟踪异常的总数,如果达到预设限制,我也会终止该进程。
所以我的问题是:我将构建更多这样的程序来处理不同类型的数据Collections
。是否有处理集合和处理不同类型异常的库?
以下是我根据评论请求添加的一些代码。如果您对自己说:“好吧,这就是您想要它做的事情,问题是什么?”,您是对的。但是我想知道是否存在一个库,可以让我注册异常以及遇到时该怎么办。比如我想在发生A或D类型的异常时停止处理,当B发生时继续,除非它发生X次,当C发生时继续,除非它发生Y次,完全忽略E。主要是因为我知道我有不同的数据集,collections
我和其他人将在未来使用并希望使用一致的东西。
基本代码片段:
exeptionLimit = 50;
exceptionCount = 0;
for (long id : MyCollection)
{
try
{
//All these methods throw the exceptions
Item item = getItemById(id);
NewData data = ProcessItem(item);
SaveNewData(data);
}
catch (SQLException e)
{
//log
throw e; //I want this to cause the process to fail
}
catch (NullPointerException e)
{
//log
exceptionCount++;
if (exceptionCount >= exceptionLimit) throw new Exception("Limit hit!");
}
}