1 /* 2 * Copyright 2024 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.android.virtualization.terminal 17 18 import android.content.Context 19 import android.util.Log 20 import java.lang.Exception 21 22 class TerminalExceptionHandler(private val context: Context) : Thread.UncaughtExceptionHandler { 23 uncaughtExceptionnull24 override fun uncaughtException(thread: Thread, throwable: Throwable) { 25 val exception = (throwable as? Exception) ?: Exception(throwable) 26 try { 27 ErrorActivity.start(context, exception) 28 } catch (_: Exception) { 29 Log.wtf(TAG, "Failed to launch error activity for an exception", exception) 30 } 31 Thread.getDefaultUncaughtExceptionHandler()?.uncaughtException(thread, throwable) 32 } 33 34 companion object { 35 private const val TAG = "TerminalExceptionHandler" 36 } 37 } 38