博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift4 异常处理Try_Catch的使用之初见
阅读量:7296 次
发布时间:2019-06-30

本文共 1416 字,大约阅读时间需要 4 分钟。

前言

从OC转Swift了。虽然Swift的官方语法的资料看了2遍了。还是在使用的时候遇到点问题。

好记性,不如烂笔头。本篇不是高深的内容。只是作为初使用的记录。

当想给一个函数使用try-catch。需要在函数后加个throws。具体使用,如下

先有个错误的枚举

enum ErrorType:Error{    case ErrorTypeNil    case ErrorType1}

这里需要函数出错会抛出错误的情况,记住后面要加throws

func largerThanEighteenthFunc(a:Int16?) throws {    if let need = a ,need >= 18{        print("need >>>> \(need)")        throw  ErrorType.ErrorTypeNil    }else{        print("need <=18")        throw  ErrorType.ErrorType1    }}

不需要捕抓错误,可以使用try!或try?。但是不建议不建议使用try!,使用try?会更加安全。因为如果当有错误捕抓到时,程序会直接崩溃

func notPrintError() {        try? largerThanEighteenthFunc(a: nil)    }

如果只包含一个catch语句,那么所有的错误都会在这个catch中执行,能够捕抓其错误信息

func oneCondition() {        do {            try largerThanEighteenthFunc(a: 9)        } catch let error {            print("error >>> \(error)")        }    }

在使用catch时,我们想它是能够进行模式匹配的、能够进行更精准的错误匹配处理。可以穷举多种情况。

func twoCondition() {    do {        try largerThanEighteenthFunc(a: 20)    } catch ErrorType.ErrorTypeNil {        print(ErrorType.ErrorTypeNil)    } catch ErrorType.ErrorType1 {        print(ErrorType.ErrorType1)    } catch { // 加入一个空的catch,用于关闭catch。否则会报错:Errors thrown from here are not handled because the enclosing catch is not exhaustive    }}

注意:在使用do-catch的时候。无论是不是把错误都穷举完,一定要写个空catch,不然会报错。

这个错误就是

Errors thrown from here are not handled because the enclosing catch is not exhaustive

友情连接:

转载于:https://www.cnblogs.com/blogwithstudyofwyn/p/9855069.html

你可能感兴趣的文章
重裝系統,磁盤消失解決方法
查看>>
11.13. Highslide
查看>>
Visual Studio 11 Beta 带来新的Metro 应用开发体验
查看>>
最佳实践: 勿在 Servlet 中实现 SingleThreadModel
查看>>
IIS发生意外错误0x8ffe2740
查看>>
架构设计中服务层的简单理解
查看>>
一般的相关分析代码
查看>>
单片机系列学习
查看>>
[LeetCode] Combinations
查看>>
java中的几种对象(PO,VO,DAO,BO,POJO)
查看>>
HDOJ--4786--Fibonacci Tree【生成树】
查看>>
功能超级丰富的彩色贪吃蛇,有道具,有等级!
查看>>
angularjs之browserTrigger
查看>>
.net程序员面试考试题目
查看>>
1.3. redis-cli - Command-line client to redis-server
查看>>
两个平板打天下-将中国看做一个城市圈,漉战移动互联网、高铁时代
查看>>
Android 部分机型GridView四周默认间距
查看>>
在Html中使用Requirejs进行模块化开发
查看>>
7.7. 其他证书工具
查看>>
[Erlang 0014]Erlang垃圾回收机制
查看>>