【发布时间】:2011-08-13 04:58:43
【问题描述】:
我将这个问题发布到了 Android 开发者小组,但我想在这里发布给其他可能像我一样面临设计问题的人:
我一直在寻找有关如何处理 HTTP 错误的习语或范例。
基本上,
我有一个在后台线程中运行的 AsyncTask,它调用我的一个名为 executeRequest() 的静态方法。
这一切都在 doInBackground() 部分完成。 executeRequest() 会抛出两种类型的异常。所有通信错误的 IOException 和我自己的异常的 ServerErrorResponse 异常。例如,如果客户端向服务器发送了错误的信息,整个 HTTP 工作但服务器抱怨(可能我传递了无效的参数或 id),就会发生这种情况。
所以,我所做的就是将结果包装在我自己的“结果对象”中。
在 onPostExecute() 中,我检查结果是否失败,然后尝试在 UI 线程中处理它。但是,我现在必须开始做
Exception e = result.getException();
if (e != null) {
if (e instanceof IOException) { //network error
//handle network error here
} else if (e instanceof ServerErrorResponseException) {
//handle server error response here
}
正如你所看到的,这变得很烦人,对于每一个新的异常,我都必须使用 instanceof 来检查它。有没有办法解决它或我可以遵循的设计来避免这种情况?我希望在 UI 线程中处理异常,以防我向用户显示对话框或其他内容。
有什么想法吗?
【问题讨论】:
标签: java android multithreading http exception