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

本文介绍了在Swift中如何通过Error协议自定义错误信息,包括使用类、枚举、结构体三种方式定义错误类型,并展示了在代码中如何抛出和捕获这些错误。通过do-catch语句处理异常,确保程序的健壮性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值