Swift异常处理
在Swift里,抛出的异常必须继承Error这个协议。那么这个协议是什么呢?
按住command再点击Error我们可以看到,
public protocol Error {
}
extension Error {
}
显然这个协议是空的,之所以还会有个空扩展,就是官方为了强调这个协议的确是空的,
只是为了标记错误的。
然后下面是我自己的例子,非常简单
enum numTest:
Int,
Error {
case _0, _1, _2, _3
case nothing = 999
}
func errorTest(by num:
Int) throws
-> String {
switch num {
case 0:
throw
numTest._0
case 1:
throw
numTest._1
case 2:
throw
numTest._2
case 3:
throw
numTest._3
case 10:
throw
numTest.nothing
default:
return "OK"
+ "
\(num)"
}
}
for i in
0...10 {
do {
try
print(errorTest(by:
i))
}catch numTest._0
{
print("wrong
0")
}catch numTest._1
{
print("wrong
1")
}catch numTest._2
{
print("wrong
2")
}catch numTest._3
{
print("wrong
3")
}catch {
print("unknow")
}
}
最后运行结果
wrong 0
wrong 1
wrong 2
wrong 3
OK 4
OK 5
OK 6
OK 7
OK 8
OK 9
unknow
Swift异常处理的更多相关文章
- Swift异常处理:throw和rethrow
Swift异常处理体现了函数式语言的特性.因此我们能够传一个会抛出异常的函数闭包(高阶函数)作为參数传到还有一个函数中(父函数),父函数能够在子函数抛出异常时直接向上抛出异常,这时用rethrowke ...
- iOS - Swift 异常处理
前言 在 Swift 1.0 时代是没有异常处理和抛出机制的,如果要处理异常,要么使用 if else 语句或 switch 语句判断处理,要么使用闭包形式的回调函数处理,再要么就使用 NSError ...
- Swift # 异常处理
面向轨道编程 - Swift 中的异常处理 问题 在开发过程中,异常处理算是比较常见的问题了. 举一个比较常见的例子:用户修改注册的邮箱,大概分为以下几个步骤: 接收到一个用户的请求:我要修改邮箱地址 ...
- Swift异常处理的try?与try!
首先要明白抛出异常后异常的运动:异常被抛出后,中断整个处理,异常不断向外层(范围)传递,直到遇到catch代码块群,会与catch代码块的条件进行匹配,匹配符合则进入此代码块处理.如果遇到没有条件的c ...
- swift 中异常的处理方法
swift 中什么时候需要处理异常,在调用系统某个方法的时,该方法最后有一个throws 说明该方法会抛出异常,如果一个方法抛出异常,那么需要对该异常进行处理 swift 异常处理提供了三种方法 方式 ...
- Swift try try! try?使用和区别
Swift try try! try?使用和区别 一.异常处理try catch的使用 1. swift异常处理 历史由来 Swift1.0版本 Cocoa Touch 的 NSError ,Swif ...
- Swift 使用 日常笔记
//------------------- var totalPrice: Int = { willSet(newTotalPrice) { //参数使用new+变量名且变量名首地址大写 printl ...
- Mac终端使用swift REPL异常处理方法
Mac终端使用swift REPL异常处理方法 终端使用swift命令出现 warning: Swift error in module libmarisa.dylibDebug info from ...
- Swift 2.0 异常处理
转自:http://www.jianshu.com/p/96a7db3fde00 WWDC 2015 宣布了新的 Swift 2.0. 这次重大更新给 Swift 提供了新的异常处理方法.这篇文章会主 ...
随机推荐
- Apache Server与多个独立Tomcat集成
取经自http://www.ramkitech.com/2012/03/virtual-host-apache-httpd-server-tomcat.html 继续干Tomcat和Apache Se ...
- MacBook Pro使用初体验之Mac快捷键汇总(持续更新中)
我于近日购置了一台13寸的MacBook Pro高配,打算開始进行iOS开发的学习.Pro的配置情况例如以下: (1)OS X Yosemite ,版本号10.10.3 (2)Retina显示屏,13 ...
- 最新wap手机agent
名称 agent 铃声格式 和弦数 数据量 删除 LGE-CU8080 LGE-CU8080/1.0 UP.Browser/4.1.26l UP.Link/5.1.2.9 pmd2.0 40 ...
- types of transfrmations
http://math.wallawalla.edu/~duncjo/courses/math113/winter08/notes/9-1_math113.pdf Name What Changes ...
- ssh key 生成
1.设置好git的name和email $ git config --global user.name "姓名" $ git config --global user.email ...
- Composite Pattern
1.将对象组合成树形结构以表示“部分--整体”的层次结构.组合模式使得用户对单个对象和组合对象的使用具有一致性. 2.Composite 模式结构图 3.实现 #ifndef _COMPONENT_H ...
- Struts2中properties
- 查看ubuntu磁盘空间占用及占用空间大的文件
最近老是收到 ecs上有台服务器的磁盘利用率高 终于有一天 ssh登不上去了 http://blog.csdn.net/aaashen/article/details/50685988 清除相关大文件 ...
- 管中窥Vue
博客文章链接:管中窥Vue Vue和Angular.React.js的相同点和不同点? 与React的相同: 都使用了Virtual DOM 提供了响应式和组件化的视图组件 将注意力集中保持在核心库, ...
- android布局中使用include及需注意点
在android布局中,使用include,将另一个xml文件引入,可作为布局的一部分,但在使用include时,需注意以下问题: 一.使用include引入 如现有标题栏布局block_header ...