我有一个执行I / O的类(让我们称之为ABC)。像FileOutputStream.close这样的东西会让你在它们周围使用try catch块。另外,我创建了自己的throwable对象,帮助用户和我知道发生了什么。
在这个类中,我传入了创建它的活动的上下文,并使得我创建了一个带有throwable文本的警告对话框。
所以这是我的问题我需要从一个新线程运行这个类,但仍然希望从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类中代替警告对话框?然后我会将警报对话框移动到try catch中,在那里调用Runnable接口运行方法,或者在后台执行asynchtask吗?
答案 0 :(得分:2)
使用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();