我有一个班级(在它自己的文件中)
public class UncaughtExceptionHandler implements
java.lang.Thread.UncaughtExceptionHandler
在我的主程序中,我有以下内容: -
Thread.setDefaultUncaughtExceptionHandler( new UncaughtExceptionHandler());
编译时出现以下错误: -
cannot instantiate the type Thread.UncaughtExceptionHandler
我在这里错过了一些基本观点吗?
这是代码: import java.io。*;
导入android.content。*;
公共类UncaughtExceptionHandler实现 java.lang.Thread.UncaughtExceptionHandler { private final Context myContext;
public UncaughtExceptionHandler(Context context) {
myContext = context;
}
public void uncaughtException(Thread thread, Throwable exception) {
boolean crashedOnLastClose = false;
MyApplication.writeProgressLog("before isfinishing".ERROR_FILE_NAME);
// The application is being destroyed by the O/S
crashedOnLastClose = true;
MyApplication.writeProgressLog("after isfinishing",ERROR_FILE_NAME);
}
}
答案 0 :(得分:2)
<强>问题强>
声明
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler());
new UncaughtExceptionHandler()
实际上是
new java.lang.Thread.UncaughtExceptionHandler()
这是抛出异常
<强>解强>
检查文件UncaughtExceptionHandler.java
找到包:(文件顶部的 )
package your.package;
现在转到您的主程序
替换
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler());
带
Thread.setDefaultUncaughtExceptionHandler(new your.package.UncaughtExceptionHandler());
答案 1 :(得分:0)
UncaughtExceptionHandler是一个接口,无法实例化接口。你需要实现它的方法。
您的代码应如下所示:
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable ex) {
// your code
}
});
希望这有帮助。
答案 2 :(得分:0)
我的IDE在使用@Override的同一构造中遇到了类似的问题。 新类型Thread.UncaughtExceptionHandler(){}的方法uncaughtException(Thread,Throwable)必须覆盖超类方法:
Thread.UncaughtExceptionHandler uce = new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e) {
String s = "ssh to user@" + host + " failed";
log.error(s);
throw new IllegalStateException(s, e);
}
};