提高你的Java代码质量吧:在switch的default代码块中增加AssertionError错误
来源:互联网 发布:qq空间网络音乐 编辑:程序博客网 时间:2024/04/30 20:10
一、分析
switch后跟枚举类型,case后列出所有的枚举项,这是一个使用枚举的主流写法,那留着default语句没有任何作用,程序已经列举了所有的可能选项,肯定不会执行到default语句,看上去纯属多余!
二、场景
错了!这个default还是很有用的,以我们定义日志级别来举例说明,这是一个典型的枚举常量,如下所示:
enum LogLevel{ DEBUG,INFO,WARN,ERROR; }
一般在使用的时候,会通过switch语句来决定用户设置的级别,然后输出到不同级别的日志,代码如下:
switch(logLevel){ case DEBUG: … … case INFO: … … case WARN: … … case ERROR: … }
由于把所有的枚举都列举完了,不肯能有其他的值,所有就不需要default代码块了,这是普遍的认识。
如果LogLevel枚举发生的改变,增加了一个枚举项FATAL,如果此时我们对switch语句不做任何修改,编译虽不会出问题,但是运行期间会发生非预期的错误:FATAL类型的日志没有输出。
三、建议
为了避免这种错误,建议在default后抛出一个AssertionError错误,这样可以保证在增加一个枚举的情况下,若其代码未修改,运行期马上就会报错,这样一来容易查找错误,方便立刻排除。
当然也有其它方法解决,比如修改IDE工具,以Eclipse为例,可以把Java->Compiler->Errors/Warnings中的Enum Type constant nont covered on 'switch'设置为Error级别,如果不判断所有枚举就不能通过编译。
- 提高你的Java代码质量吧:在switch的default代码块中增加AssertionError错误
- 提高你的Java代码质量吧
- 提高你的Java代码质量吧:小心switch带来的空值异常
- 提高你的Java代码质量吧:推荐在复杂字符串操作中使用正则表达式
- 提高你的Java代码质量吧:推荐在复杂字符串操作中使用正则表达式 .
- 提高你的Java代码质量吧:危险的边界
- 提高你的Java代码质量吧:不要在常量和变量中出现易混淆的字母
- 提高你的Java代码质量吧:提倡异常封装
- 如何提高你的代码质量
- 提高代码的质量
- 提高你的Java代码质量吧:让我们疑惑的字符串拼接方式的选择
- 提高你的Java代码质量吧:不同的列表应该选择不同的遍历方法
- 提高你的Java代码质量吧:三元操作符的类型陷阱
- 提高你的Java代码质量吧:不容忽视的四舍五入细节
- 提高你的Java代码质量吧:提防包装类型的null值
- 提高你的Java代码质量吧:不容忽视的四舍五入细节
- 提高你的Java代码质量吧:谨慎包装类型的比较
- 提高你的Java代码质量吧:字符拼接位置的玄机
- ztree的使用
- 算法:将table标识的树形结构文本数据快速导入Mysql邻接表
- 表单提交数据请求 get和post的 区别
- 个人网站如何在互联网时代下求生存
- WPF TreeView HierarchicalDataTemplate
- 提高你的Java代码质量吧:在switch的default代码块中增加AssertionError错误
- PagerHelper for ASP.NET MVC3
- CoreAudio实现录音播音和扬声器听筒模式的切换
- Redis配置文件详解
- think in java interview-高级开发人员面试宝典(一)
- 一个尘封的收购故事
- 中国的大学里垮掉的一代---武大校长的一封信
- 阻塞模式下的send、recv、close总结
- Delphi for iOS开发指南(8):在iOS应用程序中使用Tab组件来显示分页