有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案