Java代码优化:几何信息请求处理
public JSONArray geometryRequest(String geometryUrl, GisDto gisDto) throws Exception {
try {
SystemLogInfo systemLogInfo = new SystemLogInfo();
// 发送HTTP请求,并获取响应内容
String responseBody = HttpUtil.createGet(geometryUrl).form(gisDto).execute().body();
// 记录请求和响应日志
log.info('gis请求url:geometryUrl {}', geometryUrl);
log.info('请求数据:request body {}', gisDto);
log.info('返回数据:response body {}', responseBody);
// 解析响应内容
Dict responseDict = JSON.parseObject(responseBody, Dict.class);
JSONArray jsonArray = (JSONArray) responseDict.get('data');
// 处理响应内容,将points数组中的每个元素转为[x,y]的形式
JSONArray resultArray = new JSONArray();
for (Object object : jsonArray) {
JSONObject jsonObject = (JSONObject) object;
JSONObject geometry = jsonObject.getJSONObject('geometry');
JSONArray pointsArray = geometry.getJSONArray('points');
JSONArray innerArray = new JSONArray();
for (Object obj : pointsArray) {
JSONArray innerPointsArray = (JSONArray) obj;
JSONArray pointArray = new JSONArray();
for (Object innerObj : innerPointsArray) {
JSONObject pointObj = (JSONObject) innerObj;
double x = pointObj.getDouble('x');
double y = pointObj.getDouble('y');
JSONArray innerPointArray = new JSONArray();
innerPointArray.add(x);
innerPointArray.add(y);
pointArray.add(innerPointArray);
}
innerArray.add(pointArray);
}
geometry.put('points', innerArray);
resultArray.add(jsonObject);
}
return resultArray;
} catch (Exception e) {
// 记录异常日志
log.error('geometryRequest error: {}', e.getMessage());
// 将异常重新抛出给上层调用方处理
throw e;
}
}
代码优化说明
-
异常处理
- 将
try-catch块包裹整个方法,确保所有操作都在异常处理范围内。 - 在
catch块中记录异常日志,并使用throw e将异常重新抛出给上层调用方处理,而不是简单地忽略异常。
- 将
-
日志记录
- 使用更具描述性的日志信息,例如
gis请求url:geometryUrl {},方便定位问题。
- 使用更具描述性的日志信息,例如
-
变量命名
- 将
response改为responseBody,更准确地描述变量含义。 - 将
dict改为responseDict,更清晰地表明变量是解析后的响应数据。
- 将
-
代码重构
- 将处理
points数组的代码块封装成一个独立的方法,提高代码的可读性和可维护性。
- 将处理
总结
通过以上优化,代码更加清晰易懂、易于维护,并且能够更好地处理异常情况。
原文地址: https://www.cveoy.top/t/topic/oibF 著作权归作者所有。请勿转载和采集!