gpt4 book ai didi

java - 访问服务器时如何捕获错误

转载 作者:行者123 更新时间:2023-11-29 05:34:41 25 4
gpt4 key购买 nike

我创建我的 util 来从服务器请求数据:

public class PushServer {
public static ArrayList<DataBean> getAllData() {
ArrayList<DataBean> data = new ArrayList<DataBean>();

String uriJson = "http://api.mydomain.com/news.html";
String resp = Utils.getResponseText1(uriJson);

try {
JSONObject json = new JSONObject(resp);
JSONArray jArray = json.getJSONArray("items");

for (int i=0; i<jArray.length(); i++) {
JSONObject jData = jArray.getJSONObject(i);

DataBean bean = new DataBean();
bean.setMenu_ID(jData.getString("ID"));
bean.setIsDisplay(jData.getString("First_Data"));
bean.setCategoryName(jData.getString("Second_Data"));

data.add(bean);
}
}
catch(Exception e) {
e.printStackTrace();
}
return data;
}
}

当我在 AsyncTask 中调用我的 util 时:

protected void onPreExecute() {
super.onPreExecute();
pgBar.setVisibility(View.VISIBLE);
}

protected Void doInBackground(Void... params) {
try {
databean = PushServer.getAllData();
} catch (Exception e) {
netError.setVisibility(View.VISIBLE);
}
return null;
}

我没有收到错误响应。当我的连接断开时,我的屏幕是空白的...我的android应用无法访问URL API,如Trouble connection等,如何响应

最佳答案

您的代码中存在一些问题。大多数都不是那么重要,但从概念上讲,有一个很大的问题:您不应该使用 asynctask 来访问 android 上的网络。

AsyncTasks的缺陷详解in this thread .

此外,当涉及到以正确方式捕获异常的问题时,AsyncTasks 更糟糕:没有内置的错误处理。您仍然可以实现某种手动错误处理(保留异常,并通过 getter 访问它,然后询问在您的异步任务完成时是否收到任何异常)。

但是当涉及到网络时,越来越多的库提供了更有趣的替代方案,其中大多数都提出了一个很好的异步异常错误处理模型。看看我提到的线程,RoboSpice是备选方案之一。如果您不喜欢它,它还会列出所有其他众所周知的替代品 at the end of the readme on github .

关于java - 访问服务器时如何捕获错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19936507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com