美文网首页
Swift: 抛出异常

Swift: 抛出异常

作者: BabyNeedCare | 来源:发表于2020-09-21 14:51 被阅读0次

    很多代码都有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")
            }
    
    
    

    相关文章

      网友评论

          本文标题:Swift: 抛出异常

          本文链接:https://www.haomeiwen.com/subject/fxsvyktx.html