1)自定义例外有助于明确您的意图。
这怎么可能?目的是处理或记录异常,无论该类型是内置类型还是自定义类型。
我使用自定义异常的主要原因是不使用一种异常类型来覆盖不同上下文中的相同问题(例如,系统代码中的参数为null,可能受外部因素和空购物篮影响)。但是,系统和业务域代码之间的分区以及使用不同的异常类型似乎非常明显,并且没有充分利用自定义异常。与此相关,如果自定义异常涵盖业务异常,我还可以使用“查找所有引用”获取业务域级别的所有异常来源。如果检查方法中的参数是否为空,是否值得添加异常,使用它们几次,然后添加catch?在检查之后,外部因素或其他一些异常原因可能导致参数为空,这是否存在现实风险?
2)当不应使用异常来控制程序流程时,它是什么意思?为什么不呢?我认为这就像:
if (exceptionVariable != null)
{
}
填充异常对象中的每个变量通常是一种好习惯吗?作为开发人员,您是否希望每个可能的变量都被另一个编码器填充?
答案 0 :(得分:1)
我不确定我理解你的第一点,但第二点意味着你不应该使用异常来编写这样的代码:
try {
if ( something ) {
stuff();
if ( something else ) {
throw 1;
}
more_stuff();
}
}
catch( ... ) {
yet_more_stuff();
}
您只是将异常机制用作一种goto。至于为什么不这样做,我们已经有了,比例外情况更有效,更清晰。