您的位置:首页 > 其它

异常捕获try  catch的使用

2016-03-09 14:47 267 查看
新的异常捕获机制更新于 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)")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息