首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当发生错误时[NSData writeToFile:原子]会抛出异常吗?

当发生错误时[NSData writeToFile:原子]会抛出异常吗?
EN

Stack Overflow用户
提问于 2015-09-02 14:31:27
回答 3查看 373关注 0票数 2

我试图在多线程中调用NSData writeToFile:原子化。

代码语言:javascript
复制
[myLock lock];
[myData writeToFile:aPath atomically:YES];
[myLock unlock];

但是,如果writeToFile抛出异常,则不会调用myLock解锁。所以,我应该像这样使用尝试缓存吗?

代码语言:javascript
复制
@try
{
    [myLock lock];
    [myData writeToFile:aPath atomically:YES];
}
@catch (NSException *exception) {
    // deal with the exception
}
@finally {
    [myLock unlock];
}

更新:将“自动”更改为“原子化”

EN

回答 3

Stack Overflow用户

发布于 2015-09-02 14:36:10

它不会抛出任何异常(也不会在文档中这样说)。如果您关心的是处理错误,请使用其他API:

代码语言:javascript
复制
- writeToFile:options:error:
票数 1
EN

Stack Overflow用户

发布于 2015-09-02 15:19:11

首先,方法是

代码语言:javascript
复制
- (BOOL)writeToFile:(NSString * nonnull)path
     atomically:(BOOL)atomically

不是automatically,,可能只是一个错误。

其次,writeToFile不会引发异常,它只会返回一个BOOL,指示写入是失败还是成功。

代码语言:javascript
复制
[myLock unlock];

无论如何都会被调用,您不需要捕获任何异常。

这是文档

票数 1
EN

Stack Overflow用户

发布于 2015-09-02 14:38:17

不管异常是否被捕获,都会调用@finally,因此您不需要担心它没有被解锁。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32355989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档