如何捕获 Json 格式的可能错误?
How to catch possible errors in Json format?
我正在尝试使用 Microsoft 的计算机视觉制作应用 API。我想通过返回 Json 来捕获错误。这是 API 的 link...https://southcentralus.dev.cognitive.microsoft.com/docs/services/56f91f2d778daf23d8ec6739/operations/56f91f2e778daf14a499e1fa
这是我的代码...提前致谢!
@Override
protected void onPostExecute(String data) {
super.onPostExecute(data);
mEditText.setText("");
if (e != null) {
mEditText.setText("Error: " + e.getMessage());
this.e = null;
} else {
Gson gson = new Gson();
AnalysisInDomainResult result2 = gson.fromJson(data, AnalysisInDomainResult.class);
mEditText.append("Image format: " + result2.metadata.format + "\n");
mEditText.append("Image width: " + result2.metadata.width + ", height:" + result2.metadata.height + "\n");
mEditText.append("\n");
//decode the returned result
JsonArray detectedCelebs = result2.result.get("celebrities").getAsJsonArray();
if(result2.result != null){
mEditText.append("Celebrities detected: "+ detectedCelebs.size()+"\n");
for(JsonElement celebElement: detectedCelebs) {
JsonObject celeb = celebElement.getAsJsonObject();
mEditText.append("Name: "+celeb.get("name").getAsString() +", score" +
celeb.get("confidence").getAsString() +"\n");
}
}
mEditText.setSelection(0);
}
如您在 code 中所见,如果服务 returns 出错,将抛出一个简单(简洁)的 Exception
。
如果您在 Sample App 之外对代码建模,您会看到代码如下所示:
private class doRequest extends AsyncTask<String, String, String> {
// Store error message
private Exception e = null;
public doRequest() {
}
@Override
protected String doInBackground(String... args) {
try {
return process();
} catch (Exception e) {
this.e = e; // Store error
}
return null;
}
@Override
protected void onPostExecute(String data) {
super.onPostExecute(data);
...
}
e
字段会让您找到 HTTP 状态代码,但错误详细信息已经丢失。为此,您应该在 that library.
上提出问题
我正在尝试使用 Microsoft 的计算机视觉制作应用 API。我想通过返回 Json 来捕获错误。这是 API 的 link...https://southcentralus.dev.cognitive.microsoft.com/docs/services/56f91f2d778daf23d8ec6739/operations/56f91f2e778daf14a499e1fa
这是我的代码...提前致谢!
@Override
protected void onPostExecute(String data) {
super.onPostExecute(data);
mEditText.setText("");
if (e != null) {
mEditText.setText("Error: " + e.getMessage());
this.e = null;
} else {
Gson gson = new Gson();
AnalysisInDomainResult result2 = gson.fromJson(data, AnalysisInDomainResult.class);
mEditText.append("Image format: " + result2.metadata.format + "\n");
mEditText.append("Image width: " + result2.metadata.width + ", height:" + result2.metadata.height + "\n");
mEditText.append("\n");
//decode the returned result
JsonArray detectedCelebs = result2.result.get("celebrities").getAsJsonArray();
if(result2.result != null){
mEditText.append("Celebrities detected: "+ detectedCelebs.size()+"\n");
for(JsonElement celebElement: detectedCelebs) {
JsonObject celeb = celebElement.getAsJsonObject();
mEditText.append("Name: "+celeb.get("name").getAsString() +", score" +
celeb.get("confidence").getAsString() +"\n");
}
}
mEditText.setSelection(0);
}
如您在 code 中所见,如果服务 returns 出错,将抛出一个简单(简洁)的 Exception
。
如果您在 Sample App 之外对代码建模,您会看到代码如下所示:
private class doRequest extends AsyncTask<String, String, String> {
// Store error message
private Exception e = null;
public doRequest() {
}
@Override
protected String doInBackground(String... args) {
try {
return process();
} catch (Exception e) {
this.e = e; // Store error
}
return null;
}
@Override
protected void onPostExecute(String data) {
super.onPostExecute(data);
...
}
e
字段会让您找到 HTTP 状态代码,但错误详细信息已经丢失。为此,您应该在 that library.