public class Apple {
@Override
protected void finalize() throws Throwable {
super.finalize();
Thread.sleep(130*1000);
}
}
実際にA ppleオブジェクトを作成します。
C rashハンドラーでの例外のインターセプト
import android.util.Log;
import androidx.annotation.NonNull;
import java.util.concurrent.TimeoutException;
public class Te implements Thread.UncaughtExceptionHandler {
@Override
public void uncaughtException(@NonNull Thread thread, @NonNull Throwable ex) {
if (thread.getName().equals("FinalizerWatchdogDaemon") && (ex instanceof TimeoutException || ex.getMessage().contains("timed out"))) {
return; //Ignore
}
}
}
2つの例外、つまりRuntimeExceptionとTimeoutExceptionが報告されます
uncaughtException thread.getName FinalizerWatchdogDaemon ## ex.getMessage(.Apple.finalize()が10秒後にタイムアウトしました## ex.getClass()。getName()java.util.concurrent.TimeoutException
uncaughtException thread.getName FinalizerWatchdogDaemon ## ex.getMessage(java.util.concurrent.TimeoutException:.Apple.finalize()が10秒後にタイムアウトしました## ex.getClass()。getName()java.lang.RuntimeException