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")
    
  • 相关阅读:
    ACM ICPC 2008–2009 NEERC MSC A, B, C, G, L
    POJ 1088 滑雪 DP
    UVA 11584 最短回文串划分 DP
    POJ 2531 Network Saboteur DFS+剪枝
    UVa 10739 String to Palindrome 字符串dp
    UVa 11151 Longest Palindrome 字符串dp
    UVa 10154 Weights and Measures dp 降维
    UVa 10271 Chopsticks dp
    UVa 10617 Again Palindrome 字符串dp
    UVa 10651 Pebble Solitaire 状态压缩 dp
  • 原文地址:https://www.cnblogs.com/chenjianjian/p/5729383.html
Copyright © 2011-2022 走看看