swift跟别的高等谈话相同都是反常机制,来定位代码犯错的缘故地址,利用历程以下:
1、界说反常罗列
创立自身的反常罗列,并遵循Error协定:
enumNetWorkError:Error{caseauthErrorcasenetworkError}
2、抛出反常的法子
紧要波及关键字throws,throw的用法,代码方法以下
funcnetWorkRequest(status:Int)throws-Void{letobStatus=statusifobStatus=={throwNetWorkError.networkError}elseifobStatus=={throwNetWorkError.authError}else{print("allright!")}}
3、try!、try?关键词引见
try!:若断定或许抛出反常的某法子本次不抛出反常,则可前置try!来挪用,可一旦这段代码抛出了一个反常,则会引发运转时过错。
try?:代表法子或许抛犯错,也或许没错,即使产生过错,那末返回nil,即使没有产生过错,系统会把数据包装成一个可选典型的值返回。
注:do、try-catch能够嵌套利用;在或许抛出反常的法子中,一但有一处抛出了一个反常,那末这个法子则会立即中止运转,抛出反常代码反面的代码都将不会获得履行。
实例代码以下:
importUIKitclassCatchTest:UIViewController{overridefuncviewDidLoad(){super.viewDidLoad()self.title="CatchTest"self.view.backgroundColor=.white//左右对齐self.edgesForExtendedLayout=[UIRectEdge.left,UIRectEdge.right]self.test()}functest(){do{trynetWorkRequest(status:)success()}catchNetWorkError.networkError{handleNetworkError()}catchNetWorkError.authError{handleAuthError()}catch{print("其余过错")}}enumNetWorkError:Error{caseauthErrorcasenetworkError}funcnetWorkRequest(status:Int)throws-Void{letobStatus=statusifobStatus=={throwNetError.networkError}elseifobStatus=={throwNetError.authError}else{print("allright!")}}funcsuccess(){print("没有抛犯过错,连续履行")}funchandleNetworkError()-Void{print("网络过错,请审查网络")}funchandleAuthError()-Void{print("受权失利了,取舍从头登录")}}
好了swift是不是看上去没那末繁杂?
预览时标签弗成点收录于合集#个