目前我正致力于实施网络通信层。我认为首先咨询更有经验的Android开发人员是件好事。
我有一个名为WebApiController的类,它负责:发出请求和解析响应,并将它们存储在模型中。 WebApiController方法在主线程上执行,因此我将它们包装在AsyncTasks中以从主线程中取出负载。 WebApiController方法可能会抛出异常,例如ServerBadResponseException,XmlParserException等。我希望能够根据错误类型处理它们(即根据错误类型显示不同的错误消息)。那么,什么是通知onPostExecute有关错误类型的最佳方法,并在那里很好地处理它。
答案 0 :(得分:1)
或者这个:
class SomeTask extends AsyncTask<Void, Void, Params> {
@Override
protected Params doInBackground(Void... voids) {
Params params = new Params();
try {
.....
params._result = .....
} catch (Throwable e) {
params._error = e;
}
return params;
}
@Override
protected void onPostExecute(Params params) {
if(params._error != null){
....
} else {
....
}
}
}
class Params {
public Throwable _error;
public Object _result;
}
答案 1 :(得分:1)
基本上最简单的方法是设置返回代码,例如“SUCCESS”,“FAILURE_XY”并在onPostExecute()
中处理。当你通常会返回数据时,这也有效...
doInBackground() {
try {
// code
return data;
} catch (Exception e) {
Log.e(TAG, "error description", e);
resultCode = FAILURE;
return null;
}
}
onPostExecute(Data data) {
if (data == null) {
// check resultCode!
} else {
// work with your data
}
}
答案 2 :(得分:0)
你可以尝试这个(在doInBackgroung方法中):
try {
........
} catch (final Throwable e) {
runOnUiThread(new Runnable() {
public void run() {
Log.e(TAG, e.getMessage(), e);
Toast.makeText(......).show();
}
});
}