文档章节

Android错误threadid=1: thread exiting with uncaught

w
 walala_Lee
发布于 2015/06/02 16:13
字数 605
阅读 2624
收藏 2

Android错误threadid=1: thread exiting with uncaught exception (group=0x416298c8)

在项目开发中测试时崩溃,错误如上 
该错误的意思是线程中存在没有捕获到的异常。一般情况下捕获异常使用

try {
 } catch (Exception e) {
 }



但是在线程池中,线程池在执行任务时捕获了所有异常,这样一来线程中所有的异常都无法捕获到抛出的异常。 
即 try catch 捕获不到异常了。 
Java中有一个接口,UncaughtExceptionHandler 描述如下:

static interface Thread.UncaughtExceptionHandler // 当 Thread 因未捕获的异常而突然终止时,调用处理程序的接口。



Thread类中的一个方法

static void setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh) //设置当线程由于未捕获到异常而突然终止,并且没有为该线程定义其他处理程序时所调用的默认处理程序。

我们需要实现这样一个接口UncaughtExceptionHandler,然后在程序的主线程中设置处理程序。 
代码如下

import java.lang.Thread.UncaughtExceptionHandler; //implements UncaughtExceptionHandler public class Other extends Activity implements UncaughtExceptionHandler { //必须实现接口uncaughtException @Override public void uncaughtException(Thread arg0, Throwable arg1) { //在此处理异常, arg1即为捕获到的异常  Log.i("AAA", "uncaughtException   " + arg1);
    }

}



现在还无法捕获到线程中的异常,还需要调用一个方法

Thread.setDefaultUncaughtExceptionHandler(this);

在OnCreate方法中调用一下即可

@Override protected void onCreate(Bundle savedInstanceState) { //在OnCreate方法中调用下面方法,然后再使用线程,就能在uncaughtException方法中捕获到异常 Thread.setDefaultUncaughtExceptionHandler(this);
}

完整代码如下

//导入包 import java.lang.Thread.UncaughtExceptionHandler; //implements UncaughtExceptionHandler public class Other extends Activity implements UncaughtExceptionHandler       {

    @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState);
        setContentView(R.layout.th); //在此调用下面方法,才能捕获到线程中的异常 Thread.setDefaultUncaughtExceptionHandler(this); //获取创建的 Button btn1 = (Button) findViewById(R.id.btn); //给btn1添加一个点击监听事件 btn1.setOnClickListener(new OnClickListener() {
            @Override public void onClick(View arg0) { //调用我自己的方法 Init();
            }
        });
    } public void Init() { //开启线程 new Handler(Looper.getMainLooper()).post(new Runnable() {   
            @Override public void run() { //此处的 try catch 是无法捕获到异常的 try { ////////////////////////////////////////// //需要在线程中调用的方法purchase.init(context, iapListener) purchase.init(context, iapListener); ////////////////////////////////////////// } catch (Exception e) { // TODO: handle exception Log.i("AAA", "INIG   " + e);
                    e.printStackTrace();
                }
            }
        });
    } //必须实现接口uncaughtException @Override public void uncaughtException(Thread arg0, Throwable arg1) { //在此处理异常, arg1即为捕获到的异常 Log.i("AAA", "uncaughtException   " + arg1);
    }

这样再次运行就会捕获到线程中的异常,不会导致项目直接崩溃

本文转载自:http://blog.csdn.net/liqiangeastsun/article/details/43986605

w
粉丝 3
博文 169
码字总数 50381
作品 0
深圳
私信 提问
handle更新UI出现错误

想写一个聊天窗口,与服务器进行聊天,发送信息在ui线程中,接收消息在子线程中,现在的问题是接收消息的时候会出现错误,初步判断是这一句有问题:historyTxt.setText(str); 望高手指教,谢...

伪书呆子
2012/04/24
388
3
android新浪微博发出后,应该用什么技巧提示用户发送的情况?

在做新浪微博客户端。 我的设计是: 点击按钮后,发送微博: 发送微博: 嗯,微博发送成功。 然后希望可以知道自己是否有发送成功,我加了一个Toast,所以变成了这样: Total并没有显示。软件...

钟德明
2013/01/11
842
4
怎样在class里启动服务并调用它的方法

@烽火张老师 你好,想跟你请教个问题: 怎样在class里启动服务并调用它的方法?在用服务的方法时出现 W/dalvikvm( 1270): threadid=1: thread exiting with uncaught exception (group=0x419...

IshuaiT
2016/04/14
56
1
怎样在class里启动服务并调用它的方法

@wenshao 你好,想跟你请教个问题: 怎样在class里启动服务并调用它的方法?在用服务的方法时出现 W/dalvikvm( 1270): threadid=1: thread exiting with uncaught exception (group=0x419d0...

IshuaiT
2016/04/14
158
1
android开发中调用拨号功能

@邓凡平 你好,想跟你请教个问题: 我在自己编写的适配器中想要调用拨号功能,但是出现了如下错误,想问问是什么原因。 代码如下: Activity activity=(Activity)context; final String phon...

风祭_将
2013/05/13
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
今天
3
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
今天
7
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
今天
7
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
今天
5
0
PHP+Ajax微信手机端九宫格抽奖实例

PHP+Ajax结合lottery.js制作的一款微信手机端九宫格抽奖实例,抽奖完成后有收货地址添加表单出现。支持可以设置中奖概率等。 奖品列表 <div class="lottery_list clearfix" id="lottery"> ......

ymkjs1990
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部