谁会抓住它?如果没有人,那么你真的不需要自定义异常.
你会在哪里扔它?是否有足够的上下文可供使用,或者在异常对最终捕手有用之前是否需要多次捕获并重新抛出?
你为什么扔它?因为您遇到了异常并需要附加其他信息?因为您在某些数据中遇到了不可恢复的错误,需要将详细信息传回客户端代码?因为你喜欢throw
东西?
有什么例外?不是什么造成了它,但从捕手的角度来看它是什么?他们可以修复并重试的东西?他们应该永远不会重试的东西?他们应该通知用户什么?他们应该将背景信息附加到然后再重新抛出?什么决定了你需要传递的信息,如果有的话......
不要在永远不会被捕获的自定义异常上浪费时间.
不要"加倍"异常:每个自定义异常类型应该有一个明确定义的情况,它可以并且应该被捕获; 不匹配的异常应该分解为它们自己的自定义类型(而不是强制catcher将条件逻辑构建到单个catch()
子句中).
除非您有充分的理由不这样做,否则始终允许从先前捕获的异常中附加内部异常/数据.失去上下文很少有用.