2015-04-01 45 views
1

我不知道如何處理swift中的運行時錯誤。我需要檢查解析錯誤並做一些事情。任何人都可以幫助我嗎?如何處理swift中的運行時錯誤?

我的代碼是這樣的:

var:SomeObject = parse("some string") 

我需要處理髮生在運行時的任何一般性錯誤。 謝謝!

+0

官方文檔這真的取決於正在發生的事情解析功能。你用它做什麼? – 2015-04-01 08:34:51

+0

我解析爲生成一些數學表達式。我需要一般地處理這個錯誤,驗證所有可能出現錯誤的可能性太複雜了。 – russell 2015-04-01 08:36:51

+0

看到這個職位:http://stackoverflow.com/questions/24023112/try-catch-exceptions-in-swift – dimpiax 2015-04-01 08:40:51

回答

0

如果函數是你的,那麼在失敗的情況下,可以使該函數返回一個零值。

這樣,你的代碼

​​

線會變成這樣的事情

var:SomeObject? = parse("some string") 

注意的?標誌。這意味着它的值是可選的。簡而言之,它可能是一些實際的價值,或者它可能是零。 此功能後,你應該像

If anObj != nil 
{ 
//do something 
} 
else 
{ 
//the parse didn't go right, handle the erorr here. 
} 
0

斯威夫特2進行檢查,增加了額外的安全性,您的錯誤檢查。您使用會拋出關鍵字來指定哪些函數和方法可能會引發錯誤。那麼你有嘗試,並關鍵字,當你調用的東西,可能拋出:

// 1 
enum ParseError: ErrorType { 
    case InvalidValue 
} 

// 2 
func parseWithError(value:String) throws { 
    if value.count > 0 { 
    // yeaaa! 
    } else { 
    // 3 
    throw ParseError.InvalidValue 
    } 
} 

func parse(value:String) { 
    // 4 
    do { 
    try parseWithError(value) 
    } catch { 
    print("Could not parse! :[") 
    return 
    } 
} 

有幾件事情在此強調:

  1. 要創建要拋出的錯誤,只需創建一個派生自ErrorType的枚舉。
  2. 您需要使用throws關鍵字來標記任何可能引發錯誤的函數。
  3. 這引發了一個錯誤,這將在第4部分中被捕獲。
  4. 而不是嘗試塊,這可能是其他語言熟悉的嘗試塊,您可以包裝可能會在do塊中引發錯誤的任何代碼。然後,將try關鍵字添加到可能引發錯誤的每個函數調用中。

更多閱讀here或這是Error Handling