问题描述
在 OAuthClient.java 的 execute 方法中,第 259 行的 throw new CozeAuthException(error, e, e.code(), logID) 存在冗余的异常抛出逻辑。
// 第 228-265 行
protected static <T> T execute(Single<Response<T>> apiCall) {
try {
Response<T> response = apiCall.blockingGet();
if (!response.isSuccessful()) {
try (ResponseBody errorBody = response.errorBody()) {
if (errorBody == null) {
throw new HttpException(response);
}
String logID = Utils.getLogID(response);
String errStr = errorBody.string();
CozeError error = mapper.readValue(errStr, CozeError.class);
throw new CozeAuthException(error, new HttpException(response), response.code(), logID); // 第239行:第一次处理已抛出
} catch (IOException ex) {
throw new HttpException(response);
}
}
// ...
} catch (HttpException e) { // 第249行
try (ResponseBody errorBody = e.response().errorBody()) {
if (errorBody == null) {
throw e;
}
String logID = Utils.getLogID(e.response());
String errStr = e.response().errorBody().string();
CozeError error = mapper.readValue(errStr, CozeError.class);
throw new CozeAuthException(error, e, e.code(), logID); // 第259行:冗余的第二次处理
} catch (IOException ex) {
throw e;
}
}
}
问题分析
-
第 239 行已经对非成功响应进行了错误解析并抛出 CozeAuthException,而第 249-263 行的 catch (HttpException e) 块又再次进行了相同的错误解析并抛出 CozeAuthException。
-
第 259 行的 throw new CozeAuthException 会导致应用无法正常捕获该异常。
-
当第一次解析成功时,第239行的 CozeAuthException 会直接传播出去,不会进入第249行的捕获块;
建议修改
去掉第 249-263 行的 catch (HttpException e) 块,去掉第259行的 throw new CozeAuthException(error, e, e.code(), logID),因为这段代码是冗余的。第一次处理已经足够,不需要重复解析。
影响版本
影响所有版本
文件位置
api/src/main/java/com/coze/openapi/service/auth/OAuthClient.java 第 249-263 行
问题描述
在
OAuthClient.java的execute方法中,第 259 行的throw new CozeAuthException(error, e, e.code(), logID)存在冗余的异常抛出逻辑。问题分析
第 239 行已经对非成功响应进行了错误解析并抛出
CozeAuthException,而第 249-263 行的catch (HttpException e)块又再次进行了相同的错误解析并抛出CozeAuthException。第 259 行的
throw new CozeAuthException会导致应用无法正常捕获该异常。当第一次解析成功时,第239行的
CozeAuthException会直接传播出去,不会进入第249行的捕获块;建议修改
去掉第 249-263 行的
catch (HttpException e)块,去掉第259行的throw new CozeAuthException(error, e, e.code(), logID),因为这段代码是冗余的。第一次处理已经足够,不需要重复解析。影响版本
影响所有版本
文件位置
api/src/main/java/com/coze/openapi/service/auth/OAuthClient.java第 249-263 行