《从零开始学Swift》学习笔记(Day54)――抛出错误
原创文章,欢迎转载。转载请注明:关东升的博客 能放到try后面调用函数或方法都是有要求的,他们是有可能抛出错误,在这些函数或方法声明的参数后面要加上throws关键字,表示这个函数或方法可以抛出错误。 声明抛出错误方法示例代码如下: //删除Note记录方法 funcremove(model:Note)throws{ ... } //查询所有记录数据方法 funcfindAll()throws->[Note]{ ... } 上述代码remove(_:)方法没有返回值,throws关键字放到参数后面。findAll()有返回值throws关键字放到参数和返回值类型之间。 在函数或方法中抛出错误 一个函数或方法能够声明抛出错误,是因为在函数或方法中产生并抛出了错误,这样函数或方法声明抛出错误才有实际的意义。 在产生并抛出错误方式:
//删除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() guard语句最擅长处理这种早期判断,条件为false情况下抛出错误。 findAll()语句本身有可能产生错误,但是并没有使用catch语句捕获并处理,这样就导致了这个错误传播给该函数或方法的调用者,如果它的调用者也都不捕获处理,那么最后程序会出现运行期错误。
欢迎关注关东升新浪微博@tony_关东升。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |