如何处理要报告多个问题的文件上的多个异常。
我有一个多处理步骤的情况,其中不同的异常可以发生(例如,它们将在以后异步)。我使用(可能是快速失败的反模式)异常列表,然后一旦他们完成并检查异常
我有自己定制的异常类别(针对每个异步任务)(扩展异常
类),但实现了一个接口,以包含消息特定的键值对等附加信息
示例实现
List<Files> Folder;
//Now processed into below folders
List<Files> EnglishFolder;
List<Files> KoreanFolder;
List<Files> SpanishFolder;
//Now each task accumulates own exceptions.
EnglishException extends Exception implements InfoMapping
{
private EnumMap<CUSTOMENUM,STRING> info;
EnglishException(String message){super(message);}
EnglishException(String message, Exception why){super(message);}
public void addInfo(CUSTOMENUM key,String value){info.add(key,value}
}
我的问题是,如果我知道我在每个任务中创建这些异常对象时会遇到什么问题,但我不会抛出它们。但如果有一般的例外情况,我只需要捕捉它们,并将其添加为
List<EnglishException> englishErrors;
//blah blah
englishErrors.add(new EnglishException("I found this error"));
//if generic exception in catch
englishErrors.add(new EnglishException("Unknown English error",e));
//returns without throwing exception
现在我需要同步所有任务
将所有异常整齐地打包到一个XML文件中
所以我需要支持1个异常类,支持一个列表的异常类
只有这个异常(字符串消息,可抛出的原因)
只支持单个内部异常。
2个问题:
>
由于对streams还不熟悉,我能否让上面的逻辑更具可读性/更简单,比如(我对java 8非常幼稚,只是阅读而已,如果没有任何意义,请原谅我)。不寻求答案,可能只是指向在流中寻找什么来实现这一点的指针。
流。Of(englishExceptionList,SpanishexExceptionList)
。减少(父母例外)
. ifany(抛出父母异常)
您可以使用Throwable。addsupprested(Throwable)
允许记录任意数量的Throwable(随后通过getsupprested()
检索),而且在语义上也比将其他Throwable记录为“原因”更合适。
由于这是对其中一个可丢弃项的一种修改,reduce
不是正确的操作(并且它不会在并行操作中提供预期的结果)。
这看起来不像是需要对大量元素进行优化的操作,因此,最好的解决方案是直接将所有元素收集到列表中并使用
if(!listOfAllExceptions.isEmpty()) {
Throwable t = listOfAllExceptions.get(0);
listOfAllExceptions.subList(1, listOfAllExceptions.size()).forEach(t::addSuppressed);
throw t;
}
需要将t
的类型调整为未经检查或声明的异常。
Camel in Action的结尾是在时使用
我必须将多个1页pdf合并为一个pdf。我使用iTextSHarp 5.5.5.0来实现这一点,但当我合并超过900-1000个pdf时,会出现内存不足异常。我注意到,即使我释放并关闭阅读器,内存也不会得到正确的清理(进程使用的内存量永远不会减少),所以我想知道我可能做错了什么。这是我的代码: 它从来没有开始写文件,我在p.Copy()过程中得到一个内存不足的异常。AddPage()部分。我甚至尝
在我的应用程序的web.xml中,我有这样的配置: 有人能帮我吗?
我是相当新的JNI善良,所以请告诉我,如果我是愚蠢的。 我试图将一个自定义异常从C扔到Java层,该层由字符串和整数构成。我无法让ThrowNew()工作,因为它只需要一个字符串参数。我能找到的每个自定义异常的例子都使用ThrowNew()!!Grrrrr 我猜我需要构造一个,并用“扔(jthrowable obj)”扔出去,但我不确定...这和“扔新()”一样吗?? 例如,这就是我需要的: 如果
我正在尝试编写允许我做4件事的代码,我正在使用try和except。 代码如下: 但我还需要使用2个例外。你能给我解释一下我怎么做吗? 主要目标是下载一个文件;如果仍然没有,下载第二个文件,依此类推。
我正在尝试为我的项目导入一些gradle依赖项。但是,特定包正在生成NoClassDefFound异常。如果我没有理解错的话,发生这种情况是因为包是在编译时找到的,而不是在运行时找到的。我在下面包含了我的分级构建以及生成的错误。我曾尝试手动将所需的jar添加到WAR库文件中,但没有成功。 我尝试手动将所需的jar添加到WAR库文件中,但没有成功。