《从零开始学Swift》学习笔记(Day54)――抛出错误

前端之家收集整理的这篇文章主要介绍了《从零开始学Swift》学习笔记(Day54)――抛出错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

原创文章,欢迎转载。转载请注明:关东升的博客@H_403_2@@H_403_2@

能放到@H_403_2@try@H_403_2@后面调用函数方法都是有要求的,他们是有可能抛出错误,在这些函数方法声明的参数后面要加上@H_403_2@throws@H_403_2@关键字,表示这个函数方法可以抛出错误。@H_403_2@

声明抛出错误方法示例代码如下:@H_403_2@

//删除Note记录方法
funcremove(model:Note)throws{
...
}
//查询所有记录数据方法
funcfindAll()throws->[Note]{
...
}

@H_403_2@

上述代码@H_403_2@remove(_:)@H_403_2@方法没有返回值,@H_403_2@throws@H_403_2@关键字放到参数后面。@H_403_2@findAll()@H_403_2@有返回值@H_403_2@throws@H_403_2@关键字放到参数和返回值类型之间。@H_403_2@@H_403_2@

函数方法中抛出错误@H_403_2@

一个函数方法能够声明抛出错误,是因为在函数方法中产生并抛出了错误,这样函数方法声明抛出错误才有实际的意义。@H_403_2@

在产生并抛出错误方式:@H_403_2@

//删除Note方法
funcremove(model:Note)throws{

guardletdate=model.dateelse{//判断抛出时候是有了guard语句
//抛出"主键为空"错误
throwDAOError.PrimaryKeyNull
}
//比较日期主键是否相等
for(index,note)inlistData.enumerate()wherenote.date==date{
listData.removeAtIndex(index)
}
}

//查询所有数据方法
funcfindAll()throws->[Note]{

guardlistData.count>0else{//判断抛出时候是有了guard语句
//抛出"没有数据"错误。
throwDAOError.NoData
}
returnlistData
}

funcprintNotes()throws{//声明抛出错误

letdatas=tryfindAll()
fornoteindatas{
print("date:\(note.date!)-content:\(note.content!)")
}
}
tryprintNotes()

@H_403_2@

guard@H_403_2@语句最擅长处理这种早期判断,条件为@H_403_2@false@H_403_2@情况下抛出错误。@H_403_2@

findAll()@H_403_2@语句本身有可能产生错误,但是并没有使用@H_403_2@catch@H_403_2@语句捕获并处理,这样就导致了这个错误传播给该函数方法调用者,如果它的调用者也都不捕获处理,那么最后程序会出现运行期错误。@H_403_2@

@H_403_2@@H_403_2@

欢迎关注关东升新浪微博@H_403_2@@tony_@H_403_2@关东升。@H_403_2@
@H_403_2@关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息@H_403_2@

wKioL1bc88ShW-b4AAAs2MBEZnc846.png

@H_403_2@@H_403_2@@H_403_2@更多精品@H_403_2@iOS@H_403_2@、@H_403_2@Cocos@H_403_2@、移动设计课程请关注智捷课堂官方网站:@H_403_2@http://www.zhijieketang.com智捷课堂论坛网站:@H_403_2@http://51work6.com/forum.php

猜你在找的Swift相关文章