作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个执行 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/
我是一名优秀的程序员,十分优秀!