斯威夫特 - 处理"致命"第三方代码中的例外情况

时间:2017-09-25 15:20:40

标签: ios swift3 error-handling

我正在编写一些使用第三方控件内联打开PDF文件的Swift代码。问题是,对于一小部分(但不可忽略的)PDF文档,控件遇到了一个意外发现的nil"由于PDF文档中缺少某些元数据。显然try / catch只能在swift中用于程序员明确声明的错误 - 不过这是我尝试过的代码(警告没有抛出异常)

    var document: PDFDocument
    do{
        // exception is happening in this constructor
        try document = PDFDocument(filePath: location.path, password: nil)
    }catch{
        // fallback to using iOS defaults
        let av = UIAlertController(title: "Error", message: "This document couldn't be opened.  You will now be directed to your phone's default application for handling this file.", preferredStyle: .alert)
        av.addAction(UIAlertAction(title: "OK", style: .default, handler: {(alert: UIAlertAction!) in
            let docController = UIDocumentInteractionController(url: location)
            ...
        }))
        return;
    }

方法我考虑过:

  • 尝试/捕获 - 但由于上述原因,catch块永远不会运行
  • 覆盖第三方代码 - 我最有希望的选择,但由于编写代码的方式,覆盖将非常粗糙,我希望尽可能避免使用
  • 动态操作PDF文档不会抛出异常 - 也许,但对于大型PDF文件可能会很昂贵

有没有办法随意捕捉这些错误?或者是覆盖最佳方法?

我对Swift相当新,所以这可能是我的无知,但与我使用的其他平台相比,这似乎是一个相当大的差距。

编辑:对于它的价值,第三方库叫做UXMPDFKit

谢谢,

0 个答案:

没有答案