Swift3 0 異常錯誤

2021-09-12 09:49:40 字數 4010 閱讀 8138

swift3.0 - 真的很簡單

swift3.0 - 資料型別

swift3.0 - array

swift3.0 - 字典

swift3.0 - 可選值

swift3.0 - 集合

swift3.0 - 流控制

swift3.0 - 物件和類

swift3.0 - 屬性

swift3.0 - 函式和閉包

swift3.0 - 初始化和釋放

swift3.0 - 協議protocol

swift3.0 - 類和結構體的區別

swift3.0 - 列舉

swift3.0 - 擴充套件

swift3.0 - 下標

swift3.0 - 泛型

swift3.0 - 異常錯誤

swift3.0 - 斷言

swift3.0 - 自動引用計數(strong,weak,unowned)

swift3.0 - 檢測api

swift3.0 - 物件的標識

swift3.0 - 注釋

swift3.0 - 元型別

swift3.0 - 空間命名

swift3.0 - 物件判等

swift3.0 - **self的用途

swift3.0 - 類簇

swift3.0 - 動態呼叫物件(例項)方法

swift3.0 - 文字輸出

swift3.0 - 黑魔法swizzle

swift3.0 - 映象

swift3.0 - 遇到的坑

enum osuserloginerror :error
注意異常列舉型別必須遵守error 協議

error 是協議

錄入學生成績,如果輸入的成績不在0...100 丟擲異常

// 定義錯誤協議

enum scoreinputerror:error

// 定義含有異常機制的函式

func inputstudentname(name:string,score:float)throws ->boolelse if score > 100

// 開始錄入

// 錄入結束

return true

}// 呼叫函式

do catch scoreinputerror.lowzero(let name,let score)catch scoreinputerror.highhundred(let name,var score)

執行結果:

異常:張丹的成績為300.0 -- 大於1000

使用者輸入的密碼或者使用者名為空丟擲異常,如果是密碼為空,輸入密碼為空的使用者

// 定義異常 

enum osuserloginerror :error

// 定義含有異常機制的函式

func verifyusername(username:string,password:string)throws -> boolelse if (username == "" && password != "")else if (username != "" && password == "")

return true

}// 使用含有異常的函式

docatch osuserloginerror.passwordempty(let username) catch osuserloginerror.usernameempty catch

執行結果:

使用者:酷走天涯輸入的密碼為空

enum errortype:error 

func inputscore(score:int) throws->boolelse if score > 100

return true

}do catch errortype.error(let x) where x == 0catch

// 定義錯誤協議

enum studenterror:error

// 定義學生類

class student

print("第1步 丟擲異常")

throw studenterror.nameempty

}self.name = name

} }

// 呼叫函式

docatch

執行結果:

第1步 丟擲異常

第2步發生異常清理記憶體

nameempty

注意

1.類中使用defer,在物件方法中,使用defer,在defer塊中,呼叫屬性之前,必須初始化所有儲存屬性,重要事說三遍,所有的儲存屬性,所有的,儲存屬性

2.defer 在定義的當前作用域最後一步執行

a.try

let student = try student(name: "")

print("執行結果\(student)")

執行結果:

第1步

第2步發生異常清理記憶體

結論:

我們發現print("執行結果(student)") 這句**沒有執行,說明發生了異常,後面的**不會執行,但沒有報錯提示

b.try!

let student = try! student(name: "")

print("執行結果\(student)")

執行結果:

結論:

一旦發生異常,系統會報錯,後面的**不再繼續執行

c.try?

let student = try? student(name: "")

print("執行結果\(student)")

執行結果:

第1步

第2步發生異常清理記憶體

執行結果nil

let student = try? student(name: "234")

print("執行結果\(student)")

執行結果:

執行結果optional(student)

結論:

try? 如果發生異常則返回nil,如果沒有發生異常,則返回可選值,我們在使用時,需要解包可選值!

應用1:

public enum osneterror:error

/// 響應錯誤異常

public enum responseerror:int

}

請求:

func requesturl(url:url)throws

}

應用2: 如果你要使用的值有可能為nil,你最好的寫法應該像下面這樣

guard let filter = cifilter(name: "cigaussianblur",

withinputparameters: parameters) else

Swift3 0 錯誤處理 try

import uikit class viewcontroller uiviewcontroller let data jsonstring.data using utf8 反序列化 throw 丟擲異常 方法一 推薦 try?如果解析成功就有值,否則為 nil let json try?jsons...

Swift3 0 建構函式

viewcontroller.swift import uikit 在swift中,同乙個專案中 同乙個命名空間 所有的類預設都是共享的,不需要引用,可以直接訪問,不需要import 所有物件的屬性 var,也可以直接訪問到 class viewcontroller uiviewcontroller...

Swift3 0 空間命名

swift3.0 真的很簡單 swift3.0 資料型別 swift3.0 array swift3.0 字典 swift3.0 可選值 swift3.0 集合 swift3.0 流控制 swift3.0 物件和類 swift3.0 屬性 swift3.0 函式和閉包 swift3.0 初始化和釋放...