美文网首页iOS Developer
swift异常捕获try catch的使用

swift异常捕获try catch的使用

作者: 吃大米的小蚂蚁 | 来源:发表于2016-08-05 18:45 被阅读655次

    原文链接:http://blog.csdn.net/mumubumaopao/article/details/50835298

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

    1.定义枚举异常值

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

    2.抛出异常

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

    3.捕获异常

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

    4.不处理异常

    如果确定某段可能抛出异常的代码是不可能抛出异常的,则可以使用try!来进行调用,但是如果一旦这段代码抛出了一个异常,则会引起一个运行时的异常错误,所以请慎用.

    结尾:

    值得注意的是,在可能抛出异常的方法中,一但有一处抛出了一个异常,那么这个方法则会立刻停止运行.抛出异常代码后面的代码都将不会得到执行

    附自定义Dog类和调用Dog类的代码

    enumDogError :ErrorType{

    caseNameInvalidError

    caseAgeInvalidError

    caseNameLengthError

    }

    classDog:NSObject{

    varname :String!

    varage :Int!

    init(name:String,age:Int){

    self.name= name

    self.age= age

    }

    funcprintDogMessage(dog:Dog)throws->String{

    print("Dog-Class:开始检查名字是否无效")

    guardletname :String= dog.nameelse{

    throwDogError.NameInvalidError

    }

    print("Dog-Class:开始检查名字长度是否无效")

    ifname.length() <3{

    throwDogError.NameLengthError

    }

    print("Dog-Class:开始检查年龄是否无效")

    ifage<0||age>20{

    throwDogError.AgeInvalidError

    }

    print("Dog-Class:返回信息")

    return"dog的信息为"+ dog.name+"\(dog.age)"

    }

    }

    测试方法的代码:

    letmyDog =Dog(name:"小白", age:21)

    varstr :String!

    do{

    trystr = myDog.printDogMessage(myDog)

    }

    catch{

    switch(error){

    caseDogError.NameInvalidError:print("dog的名字无效错误")

    caseDogError.NameLengthError :print("dog的名字长度错误")

    caseDogError.AgeInvalidError :print("dog的年龄设置不合法")

    default:print("Main:捕获到dog其他错误")

    }

    }

    print("Main:最后输出为\(str)")

    加入审核被拒交流群,一起交流审核上架经验吧~~ 群号:689757099

    相关文章

      网友评论

        本文标题:swift异常捕获try catch的使用

        本文链接:https://www.haomeiwen.com/subject/ovtksttx.html