异常捕获try  catch的使用

新的异常捕获机制更新于 WWDC 2015上发布的新的Swift2.0,异常的try-catch机制有助于我们更快的定位出错原因所在,此处简单说明下try-catch机制的用法.

1.定义枚举异常值
    首先我们可以创建自己的异常枚举值,这要实现ErrorType协议,只不过这个协议是空的,我们加上就好.


2.抛出异常
   我们可以在方法中抛出异常,定义抛出异常的方法很简单,只需要在返回值的 -> 前面加上throws就好了,示例如下:(这个方法是自定义的Dog类里的一个实例方法,name.length()是为系统的String类通过延展添加的方法)




3.捕获异常
  我们可以在调用可能抛出异常的方法后面加上catch关键字来捕获异常



4.不处理异常
如果确定某段可能抛出异常的代码是不可能抛出异常的,则可以使用try!来进行调用,但是如果一旦这段代码抛出了一个异常,则会引起一个运行时的异常错误,所以请慎用.
结尾:
值得注意的是,在可能抛出异常的方法中,一但有一处抛出了一个异常,那么这个方法则会立刻停止运行.抛出异常代码后面的代码都将不会得到执行


附自定义Dog类和调用Dog类的代码
enum DogError : ErrorType {
   
case NameInvalidError
   
case AgeInvalidError
   
case NameLengthError
}

class Dog: NSObject {
   
var name : String !
   
var age : Int !
   
init (name: String ,age: Int ){
       
self . name = name
       
self . age = age
    }
   
   
func printDogMessage(dog: Dog ) throws -> String {
       
print ( "Dog-Class: 开始检查名字是否无效 " )
           
guard let name : String = dog. name else {
               
throw DogError . NameInvalidError
            }
       
print ( "Dog-Class: 开始检查名字长度是否无效 " )
           
if name. length () < 3 {
               
throw DogError . NameLengthError
            }
       
print ( "Dog-Class: 开始检查年龄是否无效 " )
           
if age < 0 || age > 20 {
               
throw DogError . AgeInvalidError
            }
       
print ( "Dog-Class: 返回信息 " )
       return "dog 的信息为 " + dog. name + " \ ( dog. age )"
    }
}

测试方法的代码:

    let myDog = Dog (name: " 小白 " , age: 21 )
       var str : String!
        do {
       
try str = myDog. printDogMessage (myDog)
        }
       
catch {
           
switch (error){
           
case DogError.NameInvalidError: print ( "dog 的名字无效错误 " )
           
case DogError.NameLengthError : print ( "dog 的名字长度错误 " )
           
case DogError.AgeInvalidError : print ( "dog 的年龄设置不合法 " )
           
default : print ( "Main: 捕获到 dog 其他错误 " )
            }
        }
       print("Main: 最后输出为 \ ( str )" )
加入审核被拒交流群,一起交流审核上架经验吧~~   群号:689757099
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值