2017-06-24 59 views
0

我在那個階段,我正在重構一個原型,以更靈活。這意味着我想添加錯誤處理。我的應用程序非常依賴String(contentsOf:url),與處理文件的任何操作一樣,它也很容易出錯。然而,有關初始化方法的簽名簡單地讀取:String(contentsOf url:URL)會拋出什麼樣的異常?

init(contentsOf url: URL) throws 

因此,我知道它會拋出......但它具體拋出什麼?當我不知道我可能會犯什麼錯誤時,我不確定如何處理錯誤。 documentation也不說什麼。我很難過?

+0

您不應該使用該初始值設定項。使用URLSession加載數據。 – rmaddy

+0

下載網絡數據不是URL會話嗎?我只是加載本地文件。 – PopKernel

+0

好的,對於本地文件應該沒問題。 – rmaddy

回答

0

init(contentsOf:)來自基金會的NSString API--就像所有基金會API一樣,它會拋出描述錯誤的NSError。你可以捕捉它像任何其他錯誤:

do { 
    let str = String(contentsOf: theLocalURL) 
    // ... 
} catch { 
    // Present `error.localizedDescription` to the user to let them know what went wrong 
} 

由於錯誤是NSError,你還可以趕上它是這樣來檢查其code/userInfo

do { 
    // Same as above 
} catch let error as NSError { 
    // Inspect what went wrong. 
} 

至於其具體的代碼你可能會期望,看看NSFile ...在NSError Codes list中的錯誤代碼。如果文件不存在,則通用代碼可能是NSFileReadNoPermissionErrorNSFileReadNoSuchFileError等等。

但是,一般情況下,您應該向用戶顯示錯誤的localizedDescription,並中止操作或重試。

相關問題