我正在将 C# 应用程序移植到 mac osx,在程序的 C# 版本中,我们有一个 try catch() 块,它捕获程序抛出的任何异常,这可能是空指针异常或我们没有捕获的任何异常。
然后顶级异常处理程序询问用户是否愿意报告它,当用户说报告时,将异常堆栈报告给我们。这有助于识别错误。
在我的 OSX 应用程序中,C/C++ 程序的后端部分与 Objective C 中的用户界面
目标 C 程序中是否有类似的功能?如果没有,是否有其他方法可以从程序内报告、异常或错误报告?
我正在将 C# 应用程序移植到 mac osx,在程序的 C# 版本中,我们有一个 try catch() 块,它捕获程序抛出的任何异常,这可能是空指针异常或我们没有捕获的任何异常。
然后顶级异常处理程序询问用户是否愿意报告它,当用户说报告时,将异常堆栈报告给我们。这有助于识别错误。
在我的 OSX 应用程序中,C/C++ 程序的后端部分与 Objective C 中的用户界面
目标 C 程序中是否有类似的功能?如果没有,是否有其他方法可以从程序内报告、异常或错误报告?
就异常而言,对于非致命错误,NSError 实际上优于 Objective-C 中的异常。这在 Apple 的Exception Programming Topics: Introduction to Exception Programming Topics for Cocoa文档中有描述:
重要提示:您应该将异常用于编程或意外的运行时错误,例如越界集合访问、尝试改变不可变对象、发送无效消息以及失去与窗口服务器的连接。
...
代替异常,错误对象(NSError)和 Cocoa 错误传递机制是在 Cocoa 应用程序中传达预期错误的推荐方式。有关详细信息,请参阅错误处理编程指南。
Using NSError to Great Effect是关于 NSError 的一个很好的教程(除了前面链接的错误处理文档)。
至于崩溃/致命错误报告,请参阅“Crash Reporter for Cocoa app”问题以了解许多选项。