简而言之,[NSURL URLWithString:]
似乎引发了一个例外。根据文档“如果字符串格式错误,则返回 nil”。没有提到在任何情况下都会引发异常。除此之外,我还对 URL 进行编码并检查nil
在将字符串转换为 URL 之前。
任何人都可以提供任何建议,说明可能是哪种异常,或者在转换 URL 之前我应该进行哪些其他错误检查?
如果您对细节感兴趣,调用代码如下所示:
NSString* tmpText = [newUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
if (tmpText == nil) {
// error handling
}
else {
NSURL* tmpURL = [NSURL URLWithString:tmpText];
这是从 iTunes Connect 下载的崩溃报告的一部分:
8 libobjc.A.dylib 0x300c1f84 objc_exception_throw
9 CoreFoundation 0x3029a598 +[NSException raise:format:arguments:]
10 CoreFoundation 0x3029a538 +[NSException raise:format:]
11 Foundation 0x30696dde -[NSURL initWithString:relativeToURL:]
12 Foundation 0x30696cd8 +[NSURL URLWithString:relativeToURL:]
13 Foundation 0x30696cae +[NSURL URLWithString:]
14 Yummy 0x000146ca -[DeliciousPostCell setUrl:] + 46
看起来 URL 的格式有些“错误”,但实际上应该返回一个nil
也不例外。
我自己从未见过异常,所以我无法使用 XCode 来捕获代码并查看发生了什么。遇到问题的用户从未直接联系过我,因此我无法询问更多详细信息。任何建议都非常感激。
更新(14/7/2009):看起来像是一个黑客,但我在可疑行周围添加了一个异常块。我还提出了 Radar 错误报告 (#7031551),建议代码应与文档匹配。
我遇到过一些 API 抛出异常的情况,而根据文档,这些异常不应该抛出。我的建议是确保(在您的实际代码中) tmpText 确实不是 nil (在这种情况下会抛出异常,因为大多数期望 NSStrings 的 api 都不是 nil 保存在那里)。之后,只需在其周围添加异常处理并向 bugreporter.apple.com 提交错误报告即可。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)