• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Swift之异常处理

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一.异常的介绍

  • 只要我们在编程,就一定要面对错误处理的问题。
  • 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")

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap