2015-09-25 32 views
1

我正在使用一些第三方功能,我不知道他們可以產生哪些類型的錯誤。如何捕獲並記錄所有錯誤?

我想捕獲並記錄所有這些錯誤,但ErrorType協議沒有任何可以提供有意義的消息或錯誤代碼的成員。可以做什麼來正確記錄任何類型的錯誤?

do { 
    try someFunction() 
} catch WellKnownError { // handle it } 
} catch let err {  
    let message = ... // how can I get error type and some meaningful message from err? 
    NSLog(message)  
} 

回答

0

我認爲這不是一個選項...

但你可以嘗試這樣的事情......

//---------------------------------------- 
// Private API 
//---------------------------------------- 

public enum CarError : ErrorType 
{ 
    case NeverTurnOn 
    case OutOfFuel 
    case Other(String) 
} 

public class Car 
{ 

    public func turnOn(newState:Int) throws -> Bool 
    { 

     if newState == 1 
     { 
      throw CarError.NeverTurnOn 
     } 
     else if case 2...5 = newState 
     { 
      throw CarError.OutOfFuel 
     } 
     else if newState == 10 
     { 
      throw CarError.Other("Something is gonna wrong") 
     } 
     else if newState == 11 
     { 
      throw CarError.Other(":(") 
     } 

     return false 
    } 

} 

錯誤處理

func main() 
{ 

    let car = Car() 

    do { 
     try car.turnOn(4) 
    } catch CarError.NeverTurnOn { 
     print("Turn off") 
    } catch let err as NSError { 
     print(err.description) 
    } catch { 
     print("It's madness!!!") 
    } 

} 

main() 

有了這個測試。 ..我有這個結果...

//Error Domain=trycatchtest.CarError Code=1 "The operation couldn’t be completed. (trycatchtest.CarError error 1.)" 
//Program ended with exit code: 0 

這不是解決問題的最好方法,而是一種理解此框架背景中發生的事情的新方法。

現在,請求幫助。

請,現在讓我對最終結果;)

這是否一個好或壞的結果並不重要。

相關問題