如何在Swift中捕获异常

如何在Swift中捕获异常,swift,Swift,我知道并理解swift中的错误处理-没有例外。但是在Cocoa和Cocoa Touch中,除了捕获异常之外,没有其他方法来处理错误。例如,如果在可用空间不足时写入文件句柄。这不是我们希望应用程序崩溃的情况。。。如何处理这种情况 更新 当Swift和exception同时出现在一句话中时,我看到了一些干扰。因此,让我重点介绍一种解决方案,即如果引发异常是唯一的“出错”(不是运行时,程序逻辑错误)指示,如何避免在-writeData:上崩溃。当前版本的Swift没有任何异常捕获。请注意,这可能在将来

我知道并理解swift中的错误处理-没有例外。但是在Cocoa和Cocoa Touch中,除了捕获异常之外,没有其他方法来处理错误。例如,如果在可用空间不足时写入文件句柄。这不是我们希望应用程序崩溃的情况。。。如何处理这种情况

更新


当Swift和exception同时出现在一句话中时,我看到了一些干扰。因此,让我重点介绍一种解决方案,即如果引发异常是唯一的“出错”(不是运行时,程序逻辑错误)指示,如何避免在
-writeData:
上崩溃。

当前版本的Swift没有任何异常捕获。请注意,这可能在将来的版本中发生更改。

看起来Swift 2包含了try/catch/throw-的错误处理


谢谢你的链接

我认为答案太笼统了。没有空间了-崩溃?真正地对于这样的关键需求,没有解决方案?Cocoa不是一个异常安全的框架。因此,当抛出异常时,总是您的错误。在Java中,您不应该随意捕获和重新引用异常。斯威夫特没有一个尝试捕捉机制,使得这一点更加明确。错!在Java中,存在已检查和未检查的异常。在Obj-C中,只有“未检查”的异常会使应用程序崩溃。“已检查”异常应替换为成功/错误模式。但是请看一下
NSFileHandle
s
-writeData:
的API文档。检查异常的典型示例-根本不是我的错!我的问题是:当我突然无法写入文件时,如何避免应用程序崩溃?这是否回答了你的问题?Swift 2的新错误处理不是基于异常的,只是因为它们采用了语法,所以看起来是这样。@JonShier感谢您的更正(更新了我的答案)。你是否有一个链接来阅读更多关于Swift的实现以及它与基于异常的处理的区别?苹果的Swift 2错误处理文档在这里:@JonShier-我不确定你所说的“不基于异常”是什么意思。在我看来,它确实是一个基于异常的系统。您是说Swift异常与Objective-C异常不兼容吗?Swift错误用于与用户相关和/或可恢复的错误,相当于带有
NSError
out参数的ObjC API。ObjC异常与Swift 1.x中一样,如果在ObjC代码中未捕获,则是致命错误,并且在Swift中没有直接等效项。