当前位置: 首页 > news >正文

网站建设百度搜不到做问卷哪个网站好

网站建设百度搜不到,做问卷哪个网站好,建筑工程公司名字,电子商城官方网站官网介绍如下#xff1a;Thread.UncaughtExceptionHandler (Java Platform SE 8 ) 用于线程因未捕获异常而突然终止时调用的处理程序接口。当线程由于未捕获异常而即将终止时#xff0c;Java虚拟机将使用thread . getuncaughtexceptionhandler()查询该线程的UncaughtExceptio… 官网介绍如下Thread.UncaughtExceptionHandler (Java Platform SE 8 ) 用于线程因未捕获异常而突然终止时调用的处理程序接口。当线程由于未捕获异常而即将终止时Java虚拟机将使用thread . getuncaughtexceptionhandler()查询该线程的UncaughtExceptionHandler并调用该处理程序的uncaughtException方法将线程和异常作为参数传递。 如果一个线程没有显式设置它的UncaughtExceptionHandler那么它的ThreadGroup对象充当它的UncaughtExceptionHandler。如果ThreadGroup对象对处理异常没有特殊要求它可以将调用转发给默认的未捕获异常处理程序。 基于此点我们可以将其应用为整个app出现异常后没有在此处添加异常处理的时候捕获异常并进行通用处理。 1、首先实现 Thread.UncaughtExceptionHandler 接口并创建一个单例 class CrashHandler : Thread.UncaughtExceptionHandler {companion object {private const val TAG CrashHandler//外部存储目录private val INNER_PATH Environment.getExternalStorageDirectory().path//自定义文件夹private const val SELF_FILE /lichang///文件名称private const val CRASH_FILE crash_error.logSuppressLint(SimpleDateFormat)private val formatter: DateFormat SimpleDateFormat(yyyy-MM-dd HH:mm:ss.SSS)val sInstance by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {CrashHandler()}} ... 2、添加初始化方法 private var infos mutableMapOfString, String()private var mContext: Context? nullprivate var mDefaultHandler: Thread.UncaughtExceptionHandler? null//初始化fun init(context: Context) {this.mContext contextthis.mDefaultHandler Thread.getDefaultUncaughtExceptionHandler()Thread.setDefaultUncaughtExceptionHandler(this)} 3、重写 uncaughtException() 方法 override fun uncaughtException(thread: Thread, throwable: Throwable) {if ((!handleException(throwable)) (this.mDefaultHandler ! null)) {//如果代码中没有处理交给系统处理this.mDefaultHandler!!.uncaughtException(thread, throwable);return;}//延时3秒杀死进程Log.e(TAG, Process will be killed in 2 seconds!);try {Thread.sleep(2000)} catch (e: InterruptedException) {Log.e(TAG, error : , e)}android.os.Process.killProcess(android.os.Process.myPid())exitProcess(1)}/*** 处理异常信息* param throwable* return*/private fun handleException(throwable: Throwable?): Boolean {if (throwable null) {return false}object : Thread() {override fun run() {Looper.prepare()//在此处处理出现异常的情况throwable.printStackTrace()Log.e(TAG, 出现了未捕获异常)Looper.loop()}}.start()this.mContext?.let { collectDeviceInfo(it) }saveCrashInfo2File(throwable)return true}/*** 收集设备信息* param context*/private fun collectDeviceInfo(context: Context) {val packageInfo: PackageInfo?try {packageInfo context.packageManager.getPackageInfo(context.packageName,PackageManager.GET_ACTIVITIES)if (packageInfo ! null) {val versionName if (packageInfo.versionName null) null else packageInfo.versionNameval versionCode packageInfo.versionCode.toString() this.infos[versionName] versionNamethis.infos[versionCode] versionCode}} catch (e: PackageManager.NameNotFoundException) {Log.e(TAG, an error occured when collect package info, e)}//获取Build信息val declaredFields: ArrayField Build::class.java.declaredFieldsval length declaredFields.sizevar i 0while (i length) {val declaredField: Field declaredFields[i]try {declaredField.setAccessible(true)this.infos[declaredField.getName()] declaredField.get(null).toString()} catch (e: Exception) {Log.e(TAG, an error occured when collect crash info, e)}i 1}}/*** 保存crash信息到文件* param throwable* return*/private fun saveCrashInfo2File(throwable: Throwable): String? {var throwable: Throwable? throwableval crashInfos StringBuffer()//添加分隔行crashInfos.append(\r\n)//添加crash时间crashInfos.append(Crash Time)crashInfos.append()crashInfos.append(formatter.format(Date(System.currentTimeMillis())))crashInfos.append(\r\n)val iterator: IteratorMap.EntryString, String infos.entries.iterator()var next: Map.EntryString, String? nullwhile (iterator.hasNext()) {next iterator.next()crashInfos.append(next.key)crashInfos.append()crashInfos.append(next.value)crashInfos.append(\r\n)}val exceptionInfo StringWriter()val printWriter PrintWriter(exceptionInfo)throwable!!.printStackTrace(printWriter)//循环获取throwable的栈信息throwable throwable.causewhile (throwable ! null) {throwable.printStackTrace(printWriter)throwable throwable.cause}printWriter.close()crashInfos.append(exceptionInfo.toString())try {System.currentTimeMillis()if (Environment.getExternalStorageState() Environment.MEDIA_MOUNTED) {val file File($INNER_PATH$SELF_FILE)if (!file.exists()) {file.mkdirs()}val fos FileOutputStream($INNER_PATH$SELF_FILE$CRASH_FILE, true)fos.write(crashInfos.toString().toByteArray())fos.close()}return CRASH_FILE} catch (e: Exception) {Log.e(TAG, an error occured while writing file..., e)}return null} 4、在 BaseApplication 里实现activity 里也行但毕竟 application 生命周期更长可以更好的捕获异常位置。 CrashHandler.sInstance.init(this) 5、验证手动抛出一个error“ throw Exception(error)” logcat 输出内容如下 10:48:38.287 AndroidRuntime D Shutting down VM 10:48:38.293 AndroidRuntime E FATAL EXCEPTION: mainProcess: com.lichang.source, PID: 29787java.lang.RuntimeException: java.lang.reflect.InvocationTargetExceptionat com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:563)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)Caused by: java.lang.reflect.InvocationTargetExceptionat java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:553)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) Caused by: java.lang.Exception: errorat com.lichang.source.MainActivity.onCreate$lambda$0(MainActivity.kt:23)at com.lichang.source.MainActivity.$r8$lambda$1d06GL5SsQcwKha8s7cR5MexWzU(Unknown Source:0)at com.lichang.source.MainActivity$$ExternalSyntheticLambda0.onClick(Unknown Source:0)at android.view.View.performClick(View.java:7448)at android.view.View.performClickInternal(View.java:7421)at android.view.View.access$3700(View.java:838)at android.view.View$PerformClick.run(View.java:28870)at android.os.Handler.handleCallback(Handler.java:938)at android.os.Handler.dispatchMessage(Handler.java:99)at android.os.Looper.loopOnce(Looper.java:201)at android.os.Looper.loop(Looper.java:288)at android.app.ActivityThread.main(ActivityThread.java:7941)at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:553) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)  10:48:38.299 System.err W java.lang.RuntimeException: java.lang.reflect.InvocationTargetException 10:48:38.299 System.err W at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:563) 10:48:38.299 System.err W at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) 10:48:38.300 System.err W Caused by: java.lang.reflect.InvocationTargetException 10:48:38.300 System.err W at java.lang.reflect.Method.invoke(Native Method) 10:48:38.300 System.err W at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:553) 10:48:38.300 System.err W ... 1 more 10:48:38.300 System.err W Caused by: java.lang.Exception: error 10:48:38.301 System.err W at com.lichang.source.MainActivity.onCreate$lambda$0(MainActivity.kt:23) 10:48:38.301 System.err W at com.lichang.source.MainActivity.$r8$lambda$1d06GL5SsQcwKha8s7cR5MexWzU(Unknown Source:0) 10:48:38.301 System.err W at com.lichang.source.MainActivity$$ExternalSyntheticLambda0.onClick(Unknown Source:0) 10:48:38.301 System.err W at android.view.View.performClick(View.java:7448) 10:48:38.302 System.err W at android.view.View.performClickInternal(View.java:7421) 10:48:38.302 System.err W at android.view.View.access$3700(View.java:838) 10:48:38.302 System.err W at android.view.View$PerformClick.run(View.java:28870) 10:48:38.302 System.err W at android.os.Handler.handleCallback(Handler.java:938) 10:48:38.302 System.err W at android.os.Handler.dispatchMessage(Handler.java:99) 10:48:38.303 System.err W at android.os.Looper.loopOnce(Looper.java:201) 10:48:38.303 System.err W at android.os.Looper.loop(Looper.java:288) 10:48:38.303 System.err W at android.app.ActivityThread.main(ActivityThread.java:7941) 10:48:38.303 System.err W ... 3 more 10:48:38.303 CrashHandler E 出现了未捕获异常 10:48:38.472 CrashHandler E Process will be killed in 2 seconds! ---------------------------- PROCESS ENDED (29787) for package com.lichang.source ---------------------------- 10:48:40.473 Process I Sending signal. PID: 29787 SIG: 9记录如下
http://www.w-s-a.com/news/303427/

相关文章:

  • 保洁公司网站怎么做科技设计网站有哪些内容
  • 建设厅网站查询网页设计好就业吗
  • 惠东县网站建设wordpress 如何回到初始
  • 如何让公司网站网站转备案
  • 获得网站所有关键字北京网站建设116net
  • 铜陵电子商务网站建设做龙之向导网站有用吗
  • 购物网站制作费用沧州新华区
  • 信宜网站设计公司在线购物商城系统
  • 网站维护是什么样如何制作网站教程视频讲解
  • 网站建设网络推广代理公司wordpress图片防盗链
  • 网站备案关站沈阳男科医院哪家好点
  • 王者荣耀网站建设的步骤网站页面用什么软件做
  • 典型网站开发的流程房屋装修效果图三室一厅
  • 制作微网站多少钱阿里巴巴做网站的电话号码
  • 风铃建站模板安卓手机软件开发外包
  • 深圳市住房和建设局门户网站域名转移影响网站访问吗
  • 做母婴网站赚钱汕头百姓网
  • 那个网站建设好动漫制作技术升本可以升什么专业
  • 网站建设企业响应式网站模板广西建设部投诉网站
  • app营销的特点wordpress优化方案
  • 静安网站建设公司如何编辑wordpress
  • 做网站的职位叫什么问题常州金坛网站建设
  • 保健品网站模板用jsp做的网站前后端交互
  • 网站带后台品牌网页设计图片
  • 保定清苑住房和城乡建设局网站分类信息网站程序
  • 可以做视频推广的网站选择大连网站建设
  • 在线网站开发网站在哪里
  • 建站的步骤上海快速优化排名
  • 招聘网站做一下要多少钱网站设计公司 国际
  • 巩义专业网站建设公司首选seo研究院