相对于可选中运用值的存在与缺失来表达函数的成功与失败,错误处理可以推断失败的原因,并传播至程序的其他部分。

throws关键词

一个函数可以通过在声明中添加throws关键词来抛出错误消息。

  func canThrowAnError() throws {
// 这个函数有可能抛出错误
}

try关键词

当你的函数可能抛出错误消息时, 调用函数时前置try关键词。

  try canThrowAnError()

do...catch语句

一个do语句创建了一个新的包含作用域,使得错误能被传播到一个或多个catch从句。

eg1:

do {
try canThrowAnError()
// 没有错误消息抛出
} catch {
// 有一个错误消息抛出
}

eg2:

  func makeASandwich() throws {
// ...
} do {
try makeASandwich()
eatASandwich()
} catch SandwichError.outOfCleanDishes {
washDishes()
} catch SandwichError.missingIngredients(let ingredients) {
buyGroceries(ingredients)
}

因为 makeASandwich() 抛出错误,函数调用被包裹在 try 表达式中。将函数包裹在一个 do 语句中,任何被抛出的错误会被传播到提供的 catch 从句中。

如果没有错误被抛出,eatASandwich() 函数会被调用。如果一个匹配 SandwichError.outOfCleanDishes 的错误被抛出,washDishes() 函数会被调用。如果一个匹配 SandwichError.missingIngredients 的错误被抛出,buyGroceries(_

最新文章

  1. JavaScript权威设计--事件处理介绍(简要学习笔记十七)
  2. css3——新盒子定义box-sizing
  3. WPF 检测输入状态
  4. 初学tornado之MVC版helloworld
  5. datazen logo修改
  6. $rootScope
  7. Windows下结束tomcat进程,dos命令
  8. Installshield获取安装包版本的系统变量是IFX_PRODUCT_VERSION
  9. JavaWeb:EL & JSTL
  10. Libgdx1.6.2发布,跨平台游戏开发框架
  11. 微信小程序scroll-view(或者其他view) 计算高度 px转rpx有关
  12. centos7初上手3-安装apache服务
  13. python threading 用法
  14. nagios系列(一)centos6.5环境部署nagios服务端
  15. 0基础学安卓--初识安卓Activity
  16. Docker实现原理之Namespace,CGroup
  17. nginx + fastdfs 的开机自启动
  18. eclipse-jee-mars-2-win32-x86_64安装activiti
  19. 表单验证2-JS正则
  20. 在CentOS 7上安装GitLab

热门文章

  1. [转]React表单无法输入原因----约束性和非约束性组件
  2. Asp.Net MVC3中如何进行单元测试?
  3. 九度OJ 1181:遍历链表 (链表、排序)
  4. Unable to determine IP address from host name
  5. Webpack探索【3】--- loader详解
  6. Bootstrap学习2--组件-列表组
  7. LeetCode:用HashMap解决问题
  8. rails json
  9. HDU - 4965 Fast Matrix Calculation 【矩阵快速幂】
  10. oracle 序列 + 触发器 实现 ID自动增长