处理不可能发生的异常的最佳方法

PKu*_*uhn 2 java exception-handling

我使用以下代码构建一个SQL语句,用于更新特定对象具有的字段的值.我的问题是,因为我检查对象是否具有特定字段,所以异常永远不会发生.使这段代码更具可读性的最佳方法是什么,例如避免使用try {} catch {}块.

 List<Field> modelFields = Arrays.asList(model.getClass().getFields());
 String updateString = "";

 for (Field field : fields) {
   if (modelFields.contains(field)) {
            try {
                updateString += " " + field.get((Object) model) + " ";
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        } else {
            updateString += " NULL ";
        }
    }
Run Code Online (Sandbox Code Playgroud)

JB *_*zet 9

如果您认为异常永远不会发生,那么抛出一个包装原始异常的运行时异常:

try {
    updateString += " " + field.get((Object) model) + " ";
} catch (IllegalAccessException e) {
    throw new IllegalStateException("this should never happen: the field is supposed to be public and thus accessible", e);
}
Run Code Online (Sandbox Code Playgroud)

这样一来,如果你错了,或者代码发展了,什么是不可能的,那么你就会有一个例外,它有一个明确的错误信息和异常的根本原因,而不是默默地忽略错误而得到一个不相关的错误,或更糟,一个有效但不正确的结果.