在Swift中捕获NSFileHandleOperationException

在Swift中捕获NSFileHandleOperationException,swift,exception,Swift,Exception,如何在Swift中捕获NSFileHandleOperationException 我使用fileHandle.readDataToEndOfFile()调用(根据文档)fileHandle.readDataOfLength(),它可以抛出(根据文档)一个NSFileHandleOperationException 如何捕获此异常?我试过了 do { return try fH.readDataToEndOfFile() } catch NSFileHandleOperationExce

如何在Swift中捕获
NSFileHandleOperationException

我使用
fileHandle.readDataToEndOfFile()
调用(根据文档)
fileHandle.readDataOfLength()
,它可以抛出(根据文档)一个
NSFileHandleOperationException

如何捕获此异常?我试过了

do {
    return try fH.readDataToEndOfFile()
} catch NSFileHandleOperationException {
    return nil
}
但是Xcode说

警告:“try”表达式中没有对抛出函数的调用

警告:“catch”块不可访问,因为“do”块中没有引发错误


我该怎么做 答案似乎是你不能。如果查看FileHandle中的声明,您将看到注释:

/* The API below may throw exceptions and will be deprecated in a future version of the OS.
 Use their replacements instead. */

你最终弄明白了吗?没有,我只是决定用C的好的旧的fopen,fread,fwrite,fclose。。。它们在“Darwin”模块中可用,并与Swift指针无缝配合。它可能在iOS中不起作用(我不知道),但在OSX中,即使代码多一点,它也能很好地工作。因此,我也添加了我的代码。通常,当你找到自己问题的答案时,你会将其作为答案发布并接受。嗯,我真的不认为这是一个答案;我想这应该算作解决办法。啊,好吧,这是新的。问题是底层代码抛出了一个Obj-C异常,该异常与Swifts异常机制不兼容。要捕获此异常,您需要一个Obj-C
@try…@catch
-块。我怀疑注释/弃用是新的。我在一些代码中遇到了同样的问题,使用它的代码崩溃了(因为它无法捕获objective-c异常)。我最终用其他API重写了它,因为我遇到了麻烦,最终找到了这个标题注释。我想我可以帮其他人省去麻烦:)那么他们的替代品到底是什么呢?