Ash*_*ish 17 java exception-handling classnotfoundexception
我做内搭ELF文件的应用程序(*和*的.o.),并给出方法名称列表中,但如果有人重命名的任何文件到*某或*的.o然后它会显示:
Exception occurred during event dispatching:
java.lang.NoClassDefFoundError: org/eclipse/core/resources/IWorkspaceRunnable
at org.eclipse.cdt.utils.AR.<init>(AR.java:237)
at com.lge.windowELF.ElfBinaryArchive.<init>(ElfBinaryArchive.java:24)
at com.lge.windowELF.ELFParserLibraryFile.createBinaryArchive(ELFParserLibraryFile.java:230)
at com.lge.windowELF.ELFParserLibraryFile.<init>(ELFParserLibraryFile.java:46)
at com.lge.windowELF.ELFWrapper.<init>(ELFWrapper.java:36)
at com.lge.windowELF.ELF_UIIntegrated.actionPerformed(ELF_UIIntegrated.java:510)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我想给出一些警告信息.try/catch没有捕获此异常.
Tom*_*icz 55
NoClassDefFoundError是一个子类Error而不是一个Exception.因此你需要使用:
try {
new org.eclipse.cdt.utils.AR();
}
catch(NoClassDefFoundError e) {
//handle carefully
}
Run Code Online (Sandbox Code Playgroud)
在你的代码中.请注意,你不应该抓住Error或Throwable.还要确保尽可能少地包含代码,catch因为此异常通常不会被捕获.
更新:您确定要捕获此异常吗?这是非常罕见的,我无法想象你想如何处理它.也许你应该只IWorkspaceRunnable为你的CLASSPATH 添加一个JAR 类?
它不鼓励来捕捉Error!JavaDoc 指出:
An
Error是 Throwable 的子类,表示合理的应用程序不应尝试捕获的严重问题。
我的建议是,您应该整理NoClassDefFoundError并担心代码引发的异常。
我宁愿在代码中,当类尝试打开 ELF 文件时,InvalidELFFileException在ElfBinaryArchive构造函数类上抛出(有根据的猜测)(或包装类并throws在实例化时执行)。这样,如果存在无效的 ELF 文件,则会抛出一个不错的异常。
或者,确保org.eclipse.core.resources.IWorkspaceRunnable必须放在 CLASSPATH 中。
| 归档时间: |
|
| 查看次数: |
22320 次 |
| 最近记录: |