gpt4 book ai didi

Android 线程和 Throwable

转载 作者:行者123 更新时间:2023-11-29 22:07:13 27 4
gpt4 key购买 nike

我有一个执行 I/O 的类(我们称之为 ABC)。像 FileOutputStream.close 这样的东西会让你在它们周围使用 try catch block 。此外,我创建了自己的可抛出对象,帮助用户和我了解正在发生的事情。

在这个类中,我传入了创建它的 Activity 的上下文,并使我创建了一个带有可抛出文本的警告对话框。

所以这是我的问题,我需要从一个新线程运行这个类,但仍然想从 throwable 的文本中获取信息。

例如,这就是我类典型的 catch 子句的样子。

new AlertDialog.Builder(myContext)
.setTitle("Error Message")
.setMessage(
"Error Code: #006" + "\n" + T.toString())
.setNeutralButton("OK",
new DialogInterface.OnClickListener() {

@Override
public void onClick(
DialogInterface dialog,
int which) {
// TODO: Add Ability to Email
// Developer

}
}).show();

我会做类似的事情吗

throw new Throwable(throwable);

ABC 类中的这个代替警告对话框?然后我会将警报对话框移动到调用我的 Runnable 接口(interface)运行方法的 try catch 还是在后台执行异步任务?

最佳答案

使用 Java 的 Thread.UncaughtExceptionHandler保存文本/显示对话框。因此,您将创建一个扩展 Thread.UncaughtExceptionHandler 的新类,如下所示:

public class myThreadExceptionHandler implements Thread.UncaughtExceptionHandler
{
private DataTargetClass dataTarget;
public myThreadExceptionHandler(DataTargetClass c)
{
dataTarget = c;
}
public void uncaughtException(Thread t, Throwable e)
{
dataTarget.exceptionObject = e;
dataTarget.onException();
// Just substitute in whatever method your thread uses to return information.
}
}

在启动线程的代码中,您可以这样做:

foo = new DataTargetClass();
Thread t = new Thread(myIoRunnable(foo));
t.setUncaughtExceptionHandler(new myThreadExceptionHandler(foo));
t.start();

关于Android 线程和 Throwable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10527308/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com