java如何处理“警告忽略意外异常”
我正在使用ApacheTika搜索给定文本的文件。如果file
包含s
并且没有出现异常,我的方法contains
(下面)看起来应该返回true
;否则,false
public static boolean contains(File file, String s) throws MalformedURLException,
IOException, MimeTypeException, SAXException, TikaException
{
InputStream stream = new FileInputStream(file);
AutoDetectParser parser = new AutoDetectParser();
BodyContentHandler handler = new BodyContentHandler(-1);
Metadata metadata = new Metadata();
try
{
parser.parse(stream, handler, metadata);
return handler.toString().toLowerCase().contains(s.toLowerCase());
}
catch (IOException | SAXException | TikaException e)
{
txaErrorsAppend(file + ": " + e + "\n");
return false;
}
}
(代码——特别是throws
子句和声明——来自Tika示例。)
但是try
-catch
没有捕获下面的“unexpected exception
”,这发生在代码中的parser
行上:
WARN Ignoring unexpected exception while parsing summary entry SummaryInformation
java.io.UnsupportedEncodingException: Codepage number may not be 0
at org.apache.poi.util.CodePageUtil.codepageToEncoding(CodePageUtil.java:277)
at org.apache.poi.util.CodePageUtil.codepageToEncoding(CodePageUtil.java:255)
at org.apache.poi.util.CodePageUtil.getStringFromCodePage(CodePageUtil.java:233)
at org.apache.poi.util.CodePageUtil.getStringFromCodePage(CodePageUtil.java:221)
at org.apache.poi.hpsf.CodePageString.getJavaValue(CodePageString.java:69)
at org.apache.poi.hpsf.VariantSupport.read(VariantSupport.java:210)
at org.apache.poi.hpsf.Property.<init>(Property.java:165)
at org.apache.poi.hpsf.Section.<init>(Section.java:277)
at org.apache.poi.hpsf.PropertySet.init(PropertySet.java:451)
at org.apache.poi.hpsf.PropertySet.<init>(PropertySet.java:246)
at org.apache.tika.parser.microsoft.SummaryExtractor.parseSummaryEntryIfExists(SummaryExtractor.java:81)
at org.apache.tika.parser.microsoft.SummaryExtractor.parseSummaries(SummaryExtractor.java:71)
at org.apache.tika.parser.microsoft.OfficeParser.parse(OfficeParser.java:126)
at org.apache.tika.parser.microsoft.OfficeParser.parse(OfficeParser.java:117)
at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:280)
at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:280)
at org.apache.tika.parser.AutoDetectParser.parse(AutoDetectParser.java:120)
at org.apache.tika.parser.AutoDetectParser.parse(AutoDetectParser.java:136)
at search2.TASK.contains(TASK.java:410)
at search2.TASK$FV.visitFile(TASK.java:213)
at search2.TASK$FV.visitFile(TASK.java:104)
at java.nio.file.Files.walkFileTree(Files.java:2670)
at java.nio.file.Files.walkFileTree(Files.java:2742)
at search2.TASK.doInBackground(TASK.java:434)
at search2.TASK.doInBackground(TASK.java:41)
at javax.swing.SwingWorker$1.call(SwingWorker.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at javax.swing.SwingWorker.run(SwingWorker.java:334)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
我最初有catch (Exception e);
,但Netbeans 8.0.2建议使用上面代码中显示的catch
我应该留在catch (Exception e)
吗
我是否应该向catch
添加throws
子句中列出的其他异常类型
是否存在一些try
-catch
无法捕获的异常
请注意,程序没有终止。自从消息开始“WARN Ignoring unexpected exception
”,我是否应该忘记它的发生,然后继续下一步的工作
共 (0) 个答案