很多代码都有try? 的关键字做法, 这是当有错误/无值的时候, 抛出异常。
这里用代码举例。
首先, 自定义一个Error类型的枚举。
//错误类型枚举
enum MyError : Error {
case ErrorOne
case ErrorTwo
case ErrorThree
case ErrorOther
func errorDes() {
switch self {
case .ErrorOne:
print("第一")
case .ErrorTwo:
print("第二")
case .ErrorThree:
print("第三")
default:
print("第else ")
}
}
}
这里使用枚举, 因为错误的原因多种多样。
定义一个需要抛出异常的方法:
func xxx(参数) throws -> 返回值 { }
例如:
func willThrow(type: NSInteger) throws -> NSString {
print("开始处理错误")
switch type {
case 1:
throw MyError.ErrorOne
case 2:
throw MyError.ErrorTwo
case 3:
throw MyError.ErrorThree
default:
return "一切都很好"
}
}
那么要怎么使用呢?
一般都会经历使用Url转化Data, 转成图片。做个类似操作:
/*
第一种:
通过guard let,传入的默认值:1, 会直接走到Swift case1, 抛出异常, guard let直接return
*/
guard let error = try? willThrow(type: 1) else {
return
}
print(error)
/*
第二种:
原理一样, 控制台会打印出: 出错了---1
*/
do {
let data = try willThrow(type: 1)
print(data)
} catch MyError.ErrorOne {
print("出错了---1")
} catch MyError.ErrorTwo {
print("出错了---2")
} catch {
print("出错了---others")
}
/*
简写,catch let error as MyError, 打印错误值
*/
do {
let data = try willThrow(type: 10)
print(data)
} catch let error as MyError {
print(error)
} catch {
print("others")
}
网友评论