Swift: 抛出异常

2020-09-21  本文已影响0人  BabyNeedCare

很多代码都有try? 的关键字做法, 这是当有错误/无值的时候, 抛出异常。

这里用代码举例。

首先, 自定义一个Error类型的枚举。

//错误类型枚举
enum MyError : Error {
    
    case ErrorOne
    case ErrorTwo
    case ErrorThree
    case ErrorOther
    
    func errorDes() {
        
        switch self {
        case .ErrorOne:
            print("第一")
        case .ErrorTwo:
            print("第二")
        case .ErrorThree:
            print("第三")
        default:
            print("第else ")
        }
    }
}

这里使用枚举, 因为错误的原因多种多样。

定义一个需要抛出异常的方法:

func xxx(参数) throws -> 返回值 { }

例如:

    func willThrow(type: NSInteger) throws -> NSString {
        
        print("开始处理错误")
     
        switch type {
        case 1:
            throw MyError.ErrorOne
        case 2:
            throw MyError.ErrorTwo
        case 3:
            throw MyError.ErrorThree
        default:
            return "一切都很好"
        }
    }


那么要怎么使用呢?

一般都会经历使用Url转化Data, 转成图片。做个类似操作:


        /*
            第一种:
            通过guard let,传入的默认值:1, 会直接走到Swift case1, 抛出异常, guard let直接return 
         */
        guard let error =  try? willThrow(type: 1) else {

            return
        }

        print(error)

        /*
             第二种: 
             原理一样, 控制台会打印出: 出错了---1
     */
        do {
            
            let data = try willThrow(type: 1)
            
            print(data)
    
        } catch MyError.ErrorOne {
            
            print("出错了---1")
            
        } catch MyError.ErrorTwo {
            
            print("出错了---2")
            
        } catch {
            
            print("出错了---others")
        }

        /*
          简写,catch let error as MyError, 打印错误值
        */
        do {
            
            let data = try willThrow(type: 10)
            
            print(data)
            
        } catch let error as MyError {
            
            print(error)
            
        } catch {
            
            print("others")
        }


上一篇下一篇

猜你喜欢

热点阅读