我的经验法则:
异常用于运行时错误条件(IO错误,内存不足,无法获取数据库连接等).
断言用于编码错误(此方法不接受空值,并且开发人员仍然传递了一个).
对于具有公共类的库,在公共方法上抛出异常(因为这样做是有意义的).断言用于捕捉你的错误,而不是他们的错误.
编辑:由于空值示例,这可能不完全清楚.我的观点是你使用断言(正如其他人指出的那样)应该永远不会发生的条件,因为这些条件永远不应该成为生产代码.在单元测试或QA测试期间,这些条件绝对必定失败.
我的经验法则:
异常用于运行时错误条件(IO错误,内存不足,无法获取数据库连接等).
断言用于编码错误(此方法不接受空值,并且开发人员仍然传递了一个).
对于具有公共类的库,在公共方法上抛出异常(因为这样做是有意义的).断言用于捕捉你的错误,而不是他们的错误.
编辑:由于空值示例,这可能不完全清楚.我的观点是你使用断言(正如其他人指出的那样)应该永远不会发生的条件,因为这些条件永远不应该成为生产代码.在单元测试或QA测试期间,这些条件绝对必定失败.
断言你知道不可能发生的事情(即如果它发生了,那就是你不称职的错误).
提高程序常规控制流程未处理的异常情况.