Kos*_*Kos 17

尝试...捕获 - 用于异常条件,即不是由错误的代码引起的条件,但可能只是通过外部不可预测的事件改变正常的控制流.

用于捕获无效代码的断言,即检查函数中是否保留了不变量,检查是否使用正确的参数调用内部方法(对于公共API,您可能仍然需要例外),等等.

这些是我的基本准则,但各种惯例因情况和语言而异.


当您有疑问时,您可以问自己:在我们测试完成所有内容后,是否应该在发布代码中进行特定的安全检查?如果你回答"是的,那么它仍然是必要的",你可能想要一个例外.否则,你可能想要一个断言.


tan*_*ius 6

通常assert()在发布代码中不起作用,因此它永远不能替换try-catch策略.不过我喜欢assert()在抛出异常的地方使用.对我来说(作为开发人员!),通过assert()消息到达失败线通常比通过异常堆栈更方便.