类似这种设计问题都比较难描述,我想举个例子来引入这个问题。
比如说你在设计一个组建Com的时候
Com里包含Com.Foo和Com.Bar两个类,
而Foo里面有一个方法,接受某种特定格式字符串的参数,如果发现参数不符合格式,就抛出异常。
现在我有两种想法抛出异常:
- 一是抛出/Com/Foo/Exception,表示是Foo这个类有个地方出现异常;
- 另一种是抛出/Com/ArgumentException,表示是用户传入的参数不符合条件出现的异常;
当然这两种方式可能都不是特别好,不知道大家有什么想法能分享不。理由是必须的。
自定义的Exception通常是通过异常类型来定义,没有必要通过抛出异常的来源来定,因为异常来源可以直接通过调用栈获取。
你说的是Java吗?
Java的Exception机制本身就是一个过度设计的结果
然后还有人在这个基础上继续进行过度设计
不建议自己定义异常,你都已经知道参数不符合格式了,抛出异常于事无补…
跑出exception的初衷是合理的进行错误逻辑的处理,因此设计这个应该从exception的特点去出发,或者说他们的的handle去分类,而不是来源。
正文完