使用枚举来表示错误消息 – 这是一个好习惯吗?
发布时间:2020-12-15 00:36:42 所属栏目:Java 来源:网络整理
导读:我想将我的错误消息和内容合并到一个文件中,并尽可能使我的代码更具可读性. 这是我在枚举文件中的示例: public enum ZipErrorType {// START: define exception messages (alphabetical order)EMPTY_FILE_NAME_IN_LIST { public String toString() { return
我想将我的错误消息和内容合并到一个文件中,并尽可能使我的代码更具可读性.
这是我在枚举文件中的示例: public enum ZipErrorType { // START: define exception messages (alphabetical order) EMPTY_FILE_NAME_IN_LIST { public String toString() { return "One or more null/empty filename(s) found"; } },FILE_DOESNT_EXIST { public String who(String sThisFile) { return "[" + sThisFile + "] does not exist"; } },FILE_LIST_IS_NULL { public String toString() { return "File list is null/empty"; } },FILENAME_NOT_ABSOLUTE { public String who(String sThisFile) { return "[" + sThisFile + "] is not absolute"; } },MUST_BE_DIR { public String who(String sThisFile) { return "[" + sThisFile + "] must be a directory"; } },MUST_BE_FILE { public String who(String sThisFile) { return "[" + sThisFile + "] must be a file"; } },NULL_OR_EMPTY { public String who(String sThisFile) { return "[" + sThisFile + "] is null/empty"; } },OUTPUT_FILE_ALREADY_EXISTS { public String who(String sThisFile) { return "[" + sThisFile + "] already exists"; } },OUTPUT_FILENAME_EMPTY { public String toString() { return "Output filename is null/empty"; } },OUTPUT_PATH_EMPTY { public String toString() { return "Output path is null/empty"; } },// END: define exception messages NONE {}; public String who(String sThisFile) { return ""; } } 然后在我的程序中我有如下代码: private static ZipErrorType getFileErrorsIfAny(String sFilename,boolean shouldBeFile) { // check if given filename is absolute File file = new File(sFilename); if (!file.isAbsolute()) { return ZipErrorType.FILENAME_NOT_ABSOLUTE; } // check if file exists if (!file.exists()) { return ZipErrorType.FILE_DOESNT_EXIST; } // check if corresponding file is a file when it shouldn't be... if (file.isFile() && !shouldBeFile) { return ZipErrorType.MUST_BE_DIR; } // ...or a directory when it should be a file else if (file.isDirectory() && shouldBeFile) { return ZipErrorType.MUST_BE_FILE; } return ZipErrorType.NONE; } ……以及我如何利用我的枚举的一个例子: // check input files for (String sFile : files) { if (sFile == null || sFile.trim().length() == 0) { throw new NullPointerException("One or more filename is null/empty"); } errorIfAny = getFileErrorsIfAny(sFile.trim(),true); if (!errorIfAny.equals(ZipErrorType.NONE)) { throw new ZipInputException(errorIfAny.who(sFile.trim())); } } 现在我知道单凭这些代码片段很难判断,但从一般的角度来看,这是否正常?我正在做什么不值得的麻烦,有没有办法改善这一点? 解决方法
我建议使用简单的字符串模板而不是枚举来构建错误消息.
像这样的东西: String EMPTY_FILE_NAME_IN_LIST_TEMPLATE = "One or more null/empty filename(s) found"; String FILE_DOESNT_EXIST_TEMPLATE = "[ %s ] does not exist"; String FILE_LIST_IS_NULL_TEMPLATE = "File list is null/empty"; String FILENAME_NOT_ABSOLUTE_TEMPLATE = "[ %s ] is not absolute"; String MUST_BE_DIR_TEMPLATE = "[ %s ] must be a directory"; String MUST_BE_FILE_TEMPLATE = "[ %s ] must be a file"; String NULL_OR_EMPTY_TEMPLATE = "[ %s ] is null/empty"; String OUTPUT_FILE_ALREADY_EXISTS_TEMPLATE = "[ %s ] already exists"; String OUTPUT_FILENAME_EMPTY_TEMPLATE = "Output filename is null/empty"; String OUTPUT_PATH_EMPTY_TEMPLATE = "Output path is null/empty"; 然后,使用String.format(template,sFilename)构建实际消息. 您也可以考虑从getFileErrorsIfAny()方法中抛出异常: File file = new File(sFilename); if (!file.isAbsolute()) { throw new ZipInputException(String.format(FILENAME_NOT_ABSOLUTE_TEMPLATE,sFilename)); } 对我来说看起来更干净,更紧凑. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Default Methods实例解析
- java – 在Hibernate中使用Transformers.aliasToBean填充子
- 使用Java8将Map >>转换为List
- rx-java – RxSwift – .subscribe vs .subscribeNext有什么
- java.lang.NumberFormatException:对于输入字符串:“”发
- java – 将InputStream转换为FileInputStream
- java – 无法从一堆URL(字符串数组)中设??置壁纸.怎么解决这
- 如何在Java Spring Tomcat中快速关闭无响应的Websocket?
- java – 内核可以用汇编语言编写吗?
- Android获取电池电量代码