- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在考虑在我正在编写的库中使用异常进行内部错误处理。如果使用它们,则将在启用 arc 和 f-objc-arc-exceptions
的情况下构建库。
obj-c 异常的一个问题是必须注意不要抛出任何您不知道异常安全的代码。当使用-fobjc-arc-exceptions
编译文件时,编译器异常添加的枚举代码安全吗?
据我所知,应该是这样,因为我看不出有任何理由让它做任何需要清理的事情。但如果这种行为被记录在某处,我会更高兴使用它。
编辑:我应该澄清一下,当我说“使用异常进行内部错误处理”时,我指的是非 fatal error 。所以这里的“异常安全”意味着不应该出现内存泄漏、不存在未释放的锁等情况。
最佳答案
不要将异常用于内部错误处理。
最多,您最终会得到与系统代码具有不同设计和感觉的代码。两者之间的边界始终需要维护和考虑,因为它添加了“我在异常行为栅栏的哪一边?”
实际上,这将是一场维护噩梦。每次重构代码时(可能是为了利用系统中的新功能),您都必须不断地维护两种异常处理之间的边界。
更糟糕的是,软件更新会更改实现细节,您的应用程序将开始崩溃。
这些库被设计为不使用可恢复错误的异常。如果您想最大限度地降低代码的拥有成本,您的代码应该遵循相同的模式。
系统上有几个库在内部使用异常来处理可恢复的错误。它们是错误和维护难题的持续来源。
<小时/>回答您的具体问题,不,这永远不安全:
@try {
for ( id x in array ) { ... do something that might @throw ... }
} @finally {
...
}
当您@throw
脱离快速枚举时,您正在抛出Apple代码框架,并且该行为被记录为未定义。在实践中,这样一个简单的模式可能会工作得很好,但“巧合工作”会产生巨大的维护成本。
关于ios - 使用 -fobjc-arc-exceptions 编译的文件中的快速枚举异常安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16499100/
我正在尝试构建一个首选项 Pane ,作为学习 OS X 开发的一部分。苹果下载后preference pane example code并尝试构建项目时出现以下错误: clang:错误:无法同时指定
我确实将 Objective-C 自动引用计数 设置为 YES,但我有Objective-C 垃圾收集设置为不支持 所以我看不出 -fobjc-gc 是如何设置的。还有其他我没有注意到的设置吗?我已经
我不明白为什么我不能将这个项目归档。它给了我错误: clang: error: cannot specify both '-fobjc-arc' and '-fobjc-gc' 我已经看过这里clan
我安装了 Spark Inspector 来看看它是什么样的。 我不确定,但我认为它导致了 cocoa 足类的问题。 我正在尝试将它们都删除。 我已经修复了大多数东西,但我没有收到构建错误......
我刚刚更新了我的 Pod,其中一个 BoringSSL 现在正在错误地构建我的构建,并出现以下错误: Apple LLVM 9.0 Error -fobjc-weak is not supported
我想将xmppframework添加到我的项目中,如何一次性将-fobjc-arc添加到所有xmpp文件中? 最佳答案 这并不完美,但通常已经足够好了: 在项目窗口的左上角选择项目。 选择目标。 打开
我正在尝试在IOS项目中使用SDWebImage。 我正在按照他们的github上的这些说明进行操作: import the project as a static library. Add the
我有这行代码: GetVolParmsInfoBuffer volumeParms; HParamBlockRec pb; 我包含了这个标题: #include 但编译器仍然会抛出 HParamBl
我正在考虑在我正在编写的库中使用异常进行内部错误处理。如果使用它们,则将在启用 arc 和 f-objc-arc-exceptions 的情况下构建库。 obj-c 异常的一个问题是必须注意不要抛出任
我在 objective-c 中有这个错误 -fobjc-link-runtime 它说找不到文件。我一直在谷歌搜索,但未能找到导致错误的原因。我在 xcode4.5 环境中构建它。使用 ios6 作
我有一个使用 MRC 的 iOS 项目,但对于新的源代码我想使用 ARC。我如何设置项目,以便为每个新文件添加 -fobjc-arc 标志? 更好的做法是为特定目标单独设置它,因为该项目有 17 个目
我有一个使用 MRC 的 iOS 项目,但对于新的源代码我想使用 ARC。我如何设置项目,以便为每个新文件添加 -fobjc-arc 标志? 更好的做法是为特定目标单独设置它,因为该项目有 17 个目
GCC 手册说: -fobjc-direct-dispatch Allow fast jumps to the message dispatcher. OnDarwin this is accompl
添加 OCMock 框架后我得到了那个奇怪的错误...:( ld: file not found: -fobjc-arcclang: error: linker command failed with
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Objective-C ARC Error: -fobjc-arc is not supported wit
这个问题已经在这里有了答案: 9年前关闭。 Possible Duplicate: Objective-C ARC Error: -fobjc-arc is not supported with fr
我在尝试将我的 iPhone 应用程序迁移到新的 ARC 技术时遇到问题。当我尝试转换代码时,出现以下错误 29 次: Apple LLVM compiler 3.0 Error -fobjc-a
我在 OSX 10.8.5 上使用 XCode 4.6.1。我试图编译一个项目,但出现了这个错误 error: -fobjc-arc is not supported on platforms usi
我在 OSX 10.8.5 上使用 XCode 4.6.1。我试图编译一个项目,但出现了这个错误 error: -fobjc-arc is not supported on platforms usi
我尝试使用 LLVM 编译器 2.0 在 Xcode 上构建我的项目,但出现此错误: error: unknown argument: '-fobjc-nonfragile-abi2' 我不熟悉 LL
我是一名优秀的程序员,十分优秀!