前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >23.Swift学习之访问权限、异常

23.Swift学习之访问权限、异常

作者头像
YungFan
发布2018-11-21 18:18:23
6320
发布2018-11-21 18:18:23
举报
文章被收录于专栏:学海无涯学海无涯
模块和源文件
  • 模块——是单一的代码分配单元,一个框架或应用程序会作为的独立的单元构建和发布并且可以使用 Swift 的 import 关键字导入到另一个模块。
  • 源文件是一个模块中的单个 Swift 源代码文件。
访问权限
  • openpublic :允许实体被定义模块中的任意源文件访问,同样可以被另一模块的源文件通过导入该定义模块来访问。在指定框架的公共接口时,通常使用 open 或 public。
  • internal :允许实体被定义模块中的任意源文件访问,但不能被该模块之外的任何源文件访问。通常在定义应用程序或是框架的内部结构时使用。
  • fileprivate:将实体的使用限制于当前定义源文件中。当一些细节在整个文件中使用时,使用 fileprivate 访问隐藏特定功能的实现细节。
  • private : 将实体的使用限制于封闭声明中。当一些细节仅在单独的声明中使用时,使用 private 访问隐藏特定功能的实现细节。
异常
  • 只要我们在编程,就一定要面对错误处理的问题。
  • Swift在设计的时候就尽可能让我们明确感知错误,明确处理错误
    • 比如:只有使用Optional才能处理空值;
  • 如何描述一个错误?
    • 在Swift里,任何一个遵从ErrorType protocol的类型,都可以用于描述错误。
    • ErrorType是一个空的protocol,它唯一的功能,就是告诉Swift编译器,某个类型用来表示一个错误。
    • 通常,我们使用一个enum来定义各种错误的可能性
异常处理
  • 假如我们想要读取一个文件中的内容,按照OC的逻辑我们可以这样来模拟 当我们调用方法获取结果为nil时,你并不能确定到底参数了什么错误得到了nil
代码语言:javascript
复制
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")
  • 使用异常对上述方法进行改进
代码语言:javascript
复制
// 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"
}
  • 处理异常有三种方式
代码语言:javascript
复制
// 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")
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.11.20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 模块和源文件
  • 访问权限
  • 异常
  • 异常处理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档