断言是异常还是错误?
我是一名专业的C程序员,也是一名业余爱好者Obj-C程序员(OS X)。最近,由于语法非常丰富,我很想扩展到C ++。 到目前为止,我对异常的处理还不多。Objective-C有它们,但是苹果公司的政策非常严格: 重要说明:您应保留使用编程异常或意外运行时错误(例如,超出范围的集合访问权限,尝试使不可变对象发生突变,发送无效消息以及失去与窗口服务器的连接)的例外情况。 C ++似乎更喜欢使用异常。例如,如果无法打开文件,RAII上的Wikipedia示例将引发异常。Objective-C会return nil因out参数发送错误而导致错误。值得注意的是,似乎std :: ofstream可以设置任何一种方式。 在程序员上我发现了几个答案,要么宣称使用异常代替错误代码,要么根本不使用异常。前者似乎更为普遍。 我还没有发现有人对C ++做过客观的研究。在我看来,由于指针很少使用,因此如果我选择避免异常,则必须使用内部错误标志。它会处理起来太麻烦,还是会比异常情况做得更好?两种情况的比较将是最佳答案。 编辑:虽然不完全相关,但我可能应该澄清一下nil。从技术上讲,它与相同NULL,但事实是,可以向发送消息nil。所以你可以做类似的事情 NSError *err = nil; id obj = [NSFileHandle fileHandleForReadingFromURL:myurl error:&err]; [obj retain]; 即使第一个电话返回nil。而且,就像您*obj在Obj-C中从未做过的那样,没有空指针取消引用的风险。