坑爹代码 | 你是如何被异常玩然后变成玩异常的?

码云Gitee
 码云Gitee
发布于 2019年06月10日
收藏 4

玩 Java 的人,刚开始会被各种异常虐,空指针应该是最常见的。多玩两年就开始玩异常,各种奇葩异常玩法层出不穷。

你觉得下面这种异常的定义妥吗?

public class CommandException extends BaseException {

	private static final long serialVersionUID = -6354513454371927970L;
	
	public static CommandException PARAM_NULL= new CommandException("Command_assemble_01", "Parameter is Needed But Empty");
	public static CommandException DEVID_NULL = new CommandException("Command_assemble_02", "DevId Cannot Be Null");
	public static CommandException MDCODE_NULL = new CommandException("Command_assemble_03", "Model Code Cannot Be Empty");
	public static CommandException ORDER_NULL = new CommandException("Command_assemble_04", "Order Cannot Be Empty");
	public static CommandException TYPE_NULL = new CommandException("Command_assemble_05", "Upstream / Downstream Type Cannot Be Empty");
	public static CommandException MENUID_NULL = new CommandException("Command_assemble_06", "Menu Id Cannot Be Null");
	public static CommandException CTRLTYPE_NOT_RANGE= new CommandException("Command_assemble_07", "Ctrltype Cannot Be Recognized, Which is not in Range");
	public static CommandException CMD_NULL = new CommandException("Command_analyze_01", "CMD Cannot Be Null");
	public static CommandException PAYLOAD_NULL = new CommandException("Command_analyze_02", "Payload Cannot Be Null");
	public static CommandException FRAMEWORK_FAILED= new CommandException("Command_analyze_03", "Framework Failed to be Checked");
	public static CommandException CHECK_FAILED= new CommandException("Command_analyze_04", "Command Failed to be Checked");
	public static CommandException CONFIGURE_NOT_EXIST = new CommandException("Command_error_1001", "Configure is not Exist");
	public static CommandException REDIS_ERROR = new CommandException("Command_error_1002", "Cache Command in Redis Error", true);
	
	public CommandException() {
		super();
	}

如果不妥,有什么问题呢? 

请到下面链接发表评论,领取奖品:

https://gitee.com/oschina/bullshit-codes/blob/master/java/BadException.java

码云 6 周年,我们正在征集各种坑爹代码,很多奖品等你来拿

详细的参与方法请看  https://gitee.com/oschina/bullshit-codes

------ 分割线 ------

其他坑爹代码吐槽:

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.aercaste.com]
本文标题:坑爹代码 | 你是如何被异常玩然后变成玩异常的?
加载中

精彩评论

红薯
红薯
问题在于,是否每个异常都是已知确定的?已知的问题用异常的形式反应出来,合适吗?
zqq90
zqq90
既不想被异常绑架,还不想被魔法数字绑架,用枚举对分模块不利,我这里有个方案,直接来看代码吧:
https://www.jianshu.com/p/a7f957a6db82
dwingo
dwingo
好处是抛异常时不用new及收集堆栈信息的开销,频繁抛异常会提升点性能, 坏处是丢失了抛异常时的上下文状态(如打印堆栈及一些变量值), 没有绝对的好坏, 就看是否合适.
薯粉1Q84
薯粉1Q84
我觉得挺好的啊,至少知道用异常
行走在赤道
行走在赤道
难道要和 go 一样,每个方法返回都 if 判断一下???

最新评论(37

dwingo
dwingo
Netty库的io.netty.resolver.dns.DnsResolveContext就有一些预创建的static final的异常, 不过写法要高明不少.
月之舞步
月之舞步
不太想过于咬文爵字的去指责别人的代码(自己写的时候都可能有很坑的代码),不过首先哪个注释,什么鬼意思?吐槽的话,也要吐槽得让人明白一点。
第二,那几个静态常量,怎么说呢,强行说它不好,也说不出个哪里不好(纯粹代码想法问题,换成枚举,可能可以减少10多行代码,但有没有缺陷型,效率性,多占了几KB内存?这些就是说不出哪里不好的原因,纯粹,代码写法问题。不太想咬文爵字)。
liolay
liolay
问题在于要对异常要进行分类合并,参数化
notreami
notreami
最后那个 } 呢?编译都不能通过的低级问题。@码云Gitee ,罚你手抄一百遍,信不信?
薯粉1Q84
薯粉1Q84
我觉得挺好的啊,至少知道用异常
zqq90
zqq90
既不想被异常绑架,还不想被魔法数字绑架,用枚举对分模块不利,我这里有个方案,直接来看代码吧:
https://www.jianshu.com/p/a7f957a6db82
YoungerK
YoungerK
错误码更合适
久永
久永
java我不懂,但是如果 .net 这样搞,我只能说一句:这个人根本不懂什么是异常。
xiaoyu123
xiaoyu123
嚴格需要正確的地方(啥醫療 飛控)。。。。 異常處理看場景。
一只小象
这些异常应该都加上 final 声明??
返回顶部
顶部