我有一段代码在 JSON 字符串中编码某种业务数据:
public String encodeDataAsJsonString(Data data) throws JSONException {
JSONObject o = new JSONObject();
o.put("SomeField1", data.getSomeProperty1());
o.put("SomeField2", data.getSomeProperty2());
...
return o;
}
事情是:
- JSONException 是一个检查异常,但是
- 我真的不知道如何在编译时处理它。如果 JSONException 真的发生,它可能是代码中的一个错误,应该由已经存在的常规“全局未捕获异常处理程序” (例如this)处理,并且已经执行了所有必要的日志记录和清理。
因此,我最终在调用方法中这样做了:
...
try {
encoded = encodeDataAsJsonString(data);
} catch (JSONException e) {
throw new RuntimeException(e);
}
...
这似乎比在调用堆栈上的每个方法中throws JSONException
添加a更小。但是,它仍然感觉很脏,因此我的问题是:
如果我想要一些特定的已检查异常走“常规未检查异常路线”,是否将其重新作为 RuntimeException 使用正确的习惯用法?