我正在使用project来使用Java管理MPT。
我有一段类似的代码:
try {
originalfilename = m_allFiles[i].getOriginalFileName();
} catch (Exception e) {
System.out.println("Exception Caught");
}
当我从不同的线程访问对象时,有时此指令会引发类似be.derycke.pieter.com.COMException
的异常从不打印消息“捕获到异常” ,控制台将打印此堆栈跟踪:
be.derycke.pieter.com.COMException: Failed to retrieve the properties (0x800700aa)
at jmtp.PortableDevicePropertiesImplWin32.getValues(Native Method)
at jmtp.PortableDeviceObjectImplWin32.retrieveStringValue(Unknown Source)
at jmtp.PortableDeviceObjectImplWin32.getOriginalFileName(Unknown Source)
at com.servifot.kiosco.MobileCableSearcher$MobileFolderSearcher.run(MobileCableSearcher.java:284)
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)
“ MobileCableSearcher.java:284”行是我尝试的内容。那么为什么catch不能捕获异常?
我称为getOriginalFilename()的对象是PortableDeviceObject
我尝试捕获 Throwable ,但问题完全相同。
答案 0 :(得分:2)
在PortableDeviceObjectImplWin32.retrieveStringValue
中捕获并报告了异常。
在这种情况下,您将获得null
的结果getOriginalFileName
。