我正在编写一个Android应用程序,必须在主活动中捕获所有抛出异常并向我发送电子邮件。但在我的应用程序的某些方面,我不能只通过该方法抛出异常:
示例:自定义DialogFragment中的onCreateDialog():
builder.setView(addCatLayout)
// Add action buttons
.setPositiveButton(R.string.button_ok,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
try {
// Save some data in DB here
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
dialog.dismiss();
}
})
.setNegativeButton(R.string.button_cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// Close the dialog window
dialog.dismiss();
}
});
return builder.create();
我的问题如何从此方法中删除try catch块并直接抛出要在我的主要活动中捕获的异常?我想在主活动中只有一个try catch块,它捕获所有异常并向我发送邮件。这可能吗?
谢谢!
答案 0 :(得分:1)
如果您在活动中创建对话框并想要处理异常
活性:
protected void handleException(Exception e) {
e.printStackTrace();
}
的OnClick:
@Override
public void onClick(DialogInterface dialog, int id) {
try {
// Save some data in DB here
} catch (Exception e) {
// TODO Auto-generated catch block
handleException(e); // methods are visible to nested classes
}
dialog.dismiss();
}
如果您要在活动外创建对话框,那么您应该
public void handleException(Exception e) {
e.printStackTrace();
}
创建类
的对话框public static void createDialog(final YourActivity activity) {
....
@Override
public void onClick(DialogInterface dialog, int id) {
try {
// Save some data in DB here
} catch (Exception e) {
activity.handleException(e);
}
dialog.dismiss();
}
}
但是这样做是一种更好的做法,让你的Activity实现一些接口,比如
public final class YourActivity implements ExceptionHandler {
异常处理程序
的位置public interface ExceptionHandler {
void handleException(Exception e);
}
并传递Exception处理程序接口
public void createDialog(final ExceptionHandler handler) {