Swift - 異常處理

sun.png

蘋果官方文檔 -異常處理
中國官方文檔 - 異常處理

說明

跟其它語言一樣,Swift的異常處理是在程序拋出異常后的處理邏輯。 Swift提供了一流的異常拋出、捕獲和處理的能力。跟Java語言類似, Swift的異常并不是真正的程序崩潰, 而是程序運行的一個邏輯分支;Swift和Java捕獲異常的時序也是一樣的。當Swift運行時拋出異常后并沒有被處理, 那么程序就會崩潰。

在Swift語言中使用Error表示異常, 作用同Java的Exception類或Object-C的NSError類。 蘋果建議使用枚舉作為異常類型(為什么不推薦用類或者結構體?答案是枚舉數據類型本身就是分成若干種情況,很適合做邏輯分支判斷條件)。

1.定義錯誤枚舉:注意Swift的所有異常類型都繼承于Error

  enum ErrorCollection:Error {
            
            case errorOne
            
            case errorTwo
            
            case errorThree
        }

2.定義一個異常函數,只需要在函數的參數后面 添加一個 throws 就可以了(如果函數有返回值,需要在 -> 的前面)

 func canThrowErrors(type:Int) throws -> (String) {
     
//有關于 defer  關鍵字,就是拋出異常之后會執行的語句,              
   defer {
                
                print("error:\(type)")
            }

    switch type {
            case 1:
                throw ErrorCollection.errorOne
                
            case 2:
                throw ErrorCollection.errorTwo
                
            case 3:
                throw ErrorCollection.errorThree
            default:
                
                break

            }
            
            return "success"
        }

3.異常處理的使用 do catch ,如果得知 " let hh = try canThrowErrors(type: 1)" 拋出異常,我們不希望執行 后面的語句,我們就要使用 try 如果拋出異常也要執行 后面的語句,我們就要使用 try ?,try! 使用不當會讓程序奔潰(除非你肯定這句代碼不會拋出異常,你就可以用try !)

注意:如果try語句拋出異常則會跳出do代碼塊,并按順序逐個catch,當一個catch捕獲成功后,后面的catch不再執行

 do {
            let hh = try canThrowErrors(type: 1)
            
            print(hh)
            
            if hh != nil {
                
                print("error:\(hh)")
            }
            
        } catch ErrorCollection.errorOne {
            
            print(ErrorCollection.errorOne)

        }catch ErrorCollection.errorTwo {

            print(ErrorCollection.errorTwo)

        }catch {

            print("error")
            
        }
    
    }

SuperD總結

1.Swift 異常處理是為了讓我們程序更安全,平常開發用處不多

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 跟其它語言一樣,Swift的異常處理是在程序拋出異常后的處理邏輯。 Swift提供了一流的異常拋出、捕獲和處理的能...
    捕夢少女的夢想閱讀 4,992評論 2 8
  • swift像其他編程語言一樣可以拋出異常并處理異常,本文就詳細說一下在swift中拋出并處理異常,swift中的一...
    初光夫閱讀 991評論 0 51
  • 一.異常的介紹只要我們在編程,就一定要面對錯誤處理的問題。Swift在設計的時候就盡可能讓我們明確感知錯誤,明確處...
    透支未來閱讀 824評論 0 0
  • 菊與刀 這本書說了什么? 這本書講述了日本的文化,通過介紹日本人的各守其位、虧欠償報、恥感洗刷、個人情欲、“練達”...
    前座in后座閱讀 100評論 0 0