当前位置:   article > 正文

andoid处理未捕获异常_android uncatch

android uncatch

随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)

在某些意外的情况下,程序崩溃是我们不想看到的,这时我们可以使用未捕获异常,将日志写在文件里,记录错误信息,防止影响用户体验。

  1. package com.home.testuncatch;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. import android.view.View.OnClickListener;
  6. import android.widget.Button;
  7. import com.home.testuncaughtexception.R;
  8. public class MainActivity extends Activity {
  9. @Override
  10. protected void onCreate(Bundle savedInstanceState) {
  11. super.onCreate(savedInstanceState);
  12. MyUncaughtExceptionHandler.getInstance().init();
  13. setContentView(R.layout.main);
  14. Button btn = (Button) findViewById(R.id.main_btn);
  15. btn.setOnClickListener(new OnClickListener() {
  16. @Override
  17. public void onClick(View v) {
  18. String a = null;
  19. a.length();
  20. }
  21. });
  22. }
  23. }


MyUncaughtExceptionHandler:

  1. package com.home.testuncatch;
  2. import java.io.PrintWriter;
  3. import java.io.StringWriter;
  4. import java.lang.Thread.UncaughtExceptionHandler;
  5. public class MyUncaughtExceptionHandler implements UncaughtExceptionHandler {
  6. private static MyUncaughtExceptionHandler instance;
  7. public synchronized static MyUncaughtExceptionHandler getInstance() {
  8. if (instance == null) {
  9. instance = new MyUncaughtExceptionHandler();
  10. }
  11. return instance;
  12. }
  13. public void init() {
  14. // 设置当前对象为默认的未捕获异常处理器
  15. Thread.setDefaultUncaughtExceptionHandler(this);
  16. }
  17. @Override
  18. public void uncaughtException(Thread t, Throwable e) {
  19. StringWriter stackTrace = new StringWriter();
  20. e.printStackTrace(new PrintWriter(stackTrace));
  21. System.out.println(stackTrace);// 可将错误日志写在文件里
  22. System.exit(10);
  23. }
  24. }


 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/250763
推荐阅读
相关标签
  

闽ICP备14008679号