2016-03-21 28 views
1

確切的錯誤我有這個迅速美女:如何找出catch塊

do { 
    let path = "/Users/ADMIN/Desktop/hello.txt" 
    let str = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding) 

    print(str) 
} catch { 
    print("shit happens") 
} 

當然,我收到錯誤消息,因爲有一個錯誤。我怎樣才能找出錯誤是什麼? (是的,該文件存在)

感謝

+0

https://developer.apple.com/library/prerelease/ios/documentation/Swif t/Conceptual/Swift_Programming_Language/Patterns.html#// apple_ref/doc/uid/TP40014097-CH36-ID419 – Wain

+0

密切相關:[Swift錯誤處理 - 確定錯誤類型](http://stackoverflow.com/questions/35524125/ )(可能重複,在這種情況下我不確定;鏈接的線程不包含使用Eric D.:s下面的'NSError.localizedDescription'方法的答案)。 – dfri

+0

@dfri我有一個令人驚訝的困難時間5分鐘試圖找到一個很好的副本。無論如何,我已經決定回答,也許我會在稍後關閉它以達到一個好的目標...... – Moritz

回答

2

catch創建一個 「錯誤」 不變的你,與NSError兼容:

do { 
    let path = "/Users/ADMIN/Desktop/hello.txt" 
    let str = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding) 
    print(str) 
} catch let error as NSError { 
    print(error.localizedDescription) 
} 

您也可以只使用catch自動創建「錯誤」常量:

do { 
    let path = "/Users/ADMIN/Desktop/hello.txt" 
    let str = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding) 
    print(str) 
} catch { 
    print(error) 
} 
+0

感謝您的支持!我發現真正令人沮喪的是,這個簡單的事實在錯誤處理部分的Apple Swift書中沒有提及。 – pentool