Tôi đang di chuyển mã của mình sang Swift 3 và thấy một loạt các cảnh báo tương tự với các khối do/try/catch của tôi. Tôi muốn kiểm tra xem một nhiệm vụ không trả về nil và sau đó in một cái gì đó ra bàn điều khiển nếu nó không hoạt động. Khối catch nói rằng "không thể truy cập được vì không có lỗi nào được ném vào khối 'do'". Tôi muốn bắt tất cả các lỗi với một khối catch.Xử lý lỗi trong Swift 3
let xmlString: String?
do{
//Warning for line below: "no calls to throwing function occurs within 'try' expression
try xmlString = String(contentsOfURL: accessURL, encoding: String.Encoding.utf8)
var xmlDict = XMLDictionaryParser.sharedInstance().dictionary(with: xmlString)
if let models = xmlDict?["Cygnet"] {
self.cygnets = models as! NSArray
}
//Warning for line below: "catch block is unreachable because no errors are thrown in 'do' block
} catch {
print("error getting xml string")
}
Làm cách nào để viết một khối bắt thử thích hợp có thể xử lý các lỗi gán?
Trên thực tế 'cái try' phải được viết ngay trước khi phương pháp ném chứ không phải trước biến chứa kết quả - 'xmlString = try String (...' nhưng phương thức đó thực sự ** ném ** một lỗi trong Swift 3? – vadian
Điều duy nhất là nếu nó trả về một phép gán của nil. vẫn không thể truy cập được? – Bleep
Một khối lệnh 'do - catch' req uires ít nhất một phương pháp mà ném một lỗi. 'String (contentsOfURL:' dường như không làm như vậy. Bằng cách này: Tôi nghi ngờ rằng 'String (contentsOfURL:' sẽ biên dịch trong Swift 3 – vadian