Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未捕获异常处理程序问题_Java_Android_Multithreading - Fatal编程技术网

Java 未捕获异常处理程序问题

Java 未捕获异常处理程序问题,java,android,multithreading,Java,Android,Multithreading,我有一个类(在它自己的文件中) 在我的主要课程中,我有以下内容:- Thread.setDefaultUncaughtExceptionHandler( new UncaughtExceptionHandler()); 编译时出现以下错误:- cannot instantiate the type Thread.UncaughtExceptionHandler 我是否遗漏了一些基本要点 代码如下: 导入java.io.* 导入android.content.* 公共类UncaughtExce

我有一个类(在它自己的文件中)

在我的主要课程中,我有以下内容:-

Thread.setDefaultUncaughtExceptionHandler( new UncaughtExceptionHandler());
编译时出现以下错误:-

cannot instantiate the type Thread.UncaughtExceptionHandler
我是否遗漏了一些基本要点

代码如下: 导入java.io.*

导入android.content.*

公共类UncaughtExceptionHandler实现 java.lang.Thread.UncaughtExceptionHandler{ 私有最终上下文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);


    }   


}
问题

在声明中

Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler());

实际上是

new java.lang.Thread.UncaughtExceptionHandler()
这是在抛出异常

解决方案

检查文件
UncaughtExceptionHandler.java

查找包:(在文件顶部)

现在转到你的主程序

替换

Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler()); 


UncaughtExceptionHandler是一个接口,您不能实例化接口。您需要实现它的方法

您的代码应该如下所示:

Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
    @Override
    public void uncaughtException(Thread thread, Throwable ex) {
        // your code
    }
});

希望这能有所帮助。

我的IDE在使用@Override的同一构造中遇到了类似的问题。 类型为new 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);
            }
        };

您是否实现了接口的所有方法?您必须重写方法?如果在编译或运行程序时出现错误,则必须重写方法?在我看来,获得“无法实例化类型”似乎非常奇怪编译时出错…看起来您正在根据上面发布的内容在静态上下文中调用'Thread.setDefaultUncaughtExceptionHandler'。这是一个实例方法,而不是静态方法。您可以发布代码吗?这是handlerI的代码。我刚刚输入的实现代码与主clas中的示例完全相同s和it错误与“必须重写超类方法”我似乎混淆了如何使用StackOverflow。为了在请求后显示代码,我应该在哪里使用代码块进行响应?是否编辑原始?此外,此注释区域似乎不允许按ener启动新lin。请尝试删除@override annota我刚刚尝试了你的建议,但仍然给出了无法实例化messageuse
Thread.setDefaultUncaughtExceptionHandler(新的.package.UncaughtExceptionHandler(this))
…如果这不起作用,请尝试将您的类名称更改为其他名称。在所有这些之后,我发现这不是super.onCreate之后的第一行,因此将其上移,一切正常。感谢所有帮助过我的人,只有我能看到定位,因此我很抱歉浪费了时间。作为Android的相对新手,我很感兴趣了解其背后的原理必须是第一行。事实证明,我将Java编译器符合性级别设置为1.5。将其更改为1.6可以解决此问题(EclipseIndigo)。(为什么?)
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler()); 
Thread.setDefaultUncaughtExceptionHandler(new your.package.UncaughtExceptionHandler()); 
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
    @Override
    public void uncaughtException(Thread thread, Throwable ex) {
        // your code
    }
});
        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);
            }
        };