菜鸟学IOSswift异常捕获

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是不是看上去没那末繁杂?

预览时标签弗成点收录于合集#个


转载请注明:http://www.aierlanlan.com/grrz/946.html

  • 上一篇文章:
  •   
  • 下一篇文章: