Swift 中的错误处理

Swift 错误处理

  • 在 Swift 中使用遵守 Error 协议的类型来表示错误,这是一个来自系统的空协议,凡是遵守该协议的类型都可以用于错误处理 Swift
    中枚举类型最适合构建一组相关的错误状态
enum FailError : Error {
    case ErrorOne
    case ErrorTwo
    case ErrorThree
    case ErrorFour
}

用 throwing 函数传递错误

  • 抛出错误使用关键字 throw

  • 可能会抛出错误的函数和方法必须在定义时声明,方法是在返回箭头->前添加 throws 关键字,一个标有 throws 关键字的函数被称为 throwing 函数

func TestError(_ num : Int) throws -> String {

    switch num {
        case 1:
            throw FailError.ErrorOne
        case 2:
            throw FailError.ErrorTwo
        case 3:
            throw FailError.ErrorThree
        case 4:
            throw FailError.ErrorFour
        default:
            return "成功"
    }
}

使用do-catch 处理错误

  • 可以使用一个 do-catch 语句运行一段闭包代码来处理错误,如果在 do 子句中代码抛出异常,这个错误会在 catch 子句中匹配
    从而决定哪条子句能够处理它
do {
    try TestError(4)
} catch FailError.ErrorOne {
    print("ErrorOne")
} catch FailError.ErrorTwo {
    print("ErrorTwo")
} catch FailError.ErrorThree {
    print("ErrorThree")
} catch FailError.ErrorFour {
    print("ErrorFour")
}

将错误转化为可选值

  • 可以使用 try? 将错误转换成一个可选值来处理错误。如果 try?表达式执行时一个错误被抛出,那么表达式的值为 nil
try? TestError(4)
print(try? TestError(5))

if let val = try? TestError(4) {
    print("---成功")
} else{
    print("---失败")
}

禁用错误传递

  • 虽然在程序中使用了 throw 关键字,但是我们可以确保不会抛出任何异常,这是我们就可以表达式前添加 try! 用来强制禁止错误传递
try! TestError(5)
print(try! TestError(5))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值