zoukankan      html  css  js  c++  java
  • Swift之异常处理

    一.异常的介绍

    • 只要我们在编程,就一定要面对错误处理的问题。
    • Swift在设计的时候就尽可能让我们明确感知错误,明确处理错误
    • 比如:只有使用Optional才能处理空值;
    • 如何描述一个错误?
    • 在Swift里,任何一个遵从ErrorType protocol的类型,都可以用于描述错误。
    • ErrorType是一个空的protocol,它唯一的功能,就是告诉Swift编译器,某个类型用来表示一个错误。
    • 通常,我们使用一个enum来定义各种错误的可能性

    二.异常的示例

    • 假如我们想要读取一个文件中的内容,按照OC的逻辑我们可以这样来模拟
    • 当我们调用方法获取结果为nil时,你并不能确定到底参数了什么错误得到了nil
    func readFileContent(filePath : String) -> String? {
        // 1.filePath为
        if filePath == "" {
            return nil
        }
        // 2.filepath有值,但是没有对应的文件
        if filePath != "/User/Desktop/123.plist" {
            return nil
        }
        // 3.取出其中的内容
        return "123"
    }
    readFileContent("abc")
     - 使用异常对上述方法进行改进
    // 1.定义异常
    enum FileReadError : ErrorType {
        case FileISNull
        case FileNotFound
    }
    // 2.改进方法,让方法抛出异常
    func readFileContent(filePath : String) throws -> String {
        // 1.filePath为""
        if filePath == "" {
            throw FileReadError.FileISNull
        }
        // 2.filepath有值,但是没有对应的文件
        if filePath != "/User/Desktop/123.plist" {
            throw FileReadError.FileISNull
        }
        // 3.取出其中的内容
        return "123"
    }
    

    三.处理异常有三种方式

    • 3.异常的处理三种方式
    • 3.1.try方式,需要手动处理异常
    do {
        let result = try readFileContent("abc")
    } catch {
        print(error)
    }
    
    • 3.2.try?方式,不处理异常,如果出现了异常,则返回一个nil.没有异常,则返回对应的值
    • 最终返回结果为一个可选类型
    let result = try? readFileContent("abc")
    
    • 3.3.try!方法,告诉系统该方法没有异常.
    • 注意:如果出现了异常,则程序会崩溃
    try! readFileContent("abc")
    
  • 相关阅读:
    【python】浅谈包
    【python】浅谈encode和decode
    【python】环境变量的配置
    Android Studio中添加对HttpClient的支持包
    Android studio中2种build.gradle文件介绍
    服务器响应状态码
    Java UDP实现聊天功能代码【转】
    Java InetAddress.getByAddress()的使用
    IP地址分类(A类 B类 C类 D类 E类)
    Android App发布遇到的问题总结【转】
  • 原文地址:https://www.cnblogs.com/chenjianjian/p/5729383.html
Copyright © 2011-2022 走看看