swift5基本语法-Error错误处理/异常处理

Swift中可以通过Error协议自定义错误信息

例如下面这种错误场景:

01.png

可以通过自定义Error错误信息来抛出异常,Error信息可以定义为枚举结构体三种形式,用法如下所示:

class ClassError: Error {
    var msg : String
    init(msg: String) {
        self.msg = msg
    }
}

enum EnumError : Error {
    case msg(String)
    case outOfBounds(Int , Int)
    case outOfMemory
    // ......
}

struct StructError: Error {
    var msg : String
}


class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        var result = try? divide(20, 0)
        print(result)
        func divide(_ num1: Int, _ num2: Int) throws -> Int {
            if num2 == 0 {
                throw ClassError.init(msg: "0不能作为除数")
                // throw EnumError.msg("0不能作为除数")
                // throw StructError(msg: "0不能作为除数")
            }
            return num1 / num2
        }


      // func test() {
      //     do {
      //         let result = try divide(20, 0)
      //         print(result)
      //     } catch let EnumError.msg(errorMsg) {
      //         print("0不能作为除数\(errorMsg)")
      //     } catch let EnumError.outOfBounds(size, index) {
      //         print("下标越界\(size) \(index)")
      //     } catch EnumError.outOfMemory {
      //         print("内存溢出")
      //     } catch {
      //         print("其它错误")
      //     }
      // }
     
    }
}

如果分母传入0,则会出现下列错误:

02.png
  • try! : 如果发生错误, 程序会崩溃. 不推荐使用,此时对于这种崩溃,我们可以使用 do-catch 来捕捉,用法如下所示:

do-catch 用法一:

03.png

do-catch 用法二:

04.png

do-catch 用法三:

05.png

END!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值