频道栏目
首页 > 资讯 > IOS > 正文

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

16-07-05        来源:[db:作者]  
收藏   我要投稿
   能放到try后面调用函数或方法都是有要求的,他们是有可能抛出错误,在这些函数或方法声明的参数后面要加上throws关键字,表示这个函数或方法可以抛出错误。

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


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

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

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

   在产生并抛出错误方式:

   在函数或方法中通过throw语句,人为地抛出错误。

   在函数或方法中调用的其他可以抛出错误函数或方法,但是没有捕获处理,会导致错误被传播出来。

   示例代码如下:

//删除Note方法
func remove(model: Note)throws {       
    
    guard let date = model.date else {        //判断抛出时候是有了guard语句
        //抛出"主键为空"错误
        throw DAOError.PrimaryKeyNull     
    }
    //比较日期主键是否相等
    for (index, note) in listData.enumerate()where note.date == date {
        listData.removeAtIndex(index)
    }
}
 
//查询所有数据方法
func findAll() throws-> [Note] {       
    
    guard listData.count > 0 else {           //判断抛出时候是有了guard语句
        //抛出"没有数据"错误。
        throw DAOError.NoData         
    }
    return listData
}
 
func printNotes() throws {               //声明抛出错误
    
    let datas = try findAll()       
    for note in datas {
        print("date : \(note.date!) -content: \(note.content!)")
    }
}
try printNotes()

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

    findAll()语句本身有可能产生错误,但是并没有使用catch语句捕获并处理,这样就导致了这个错误传播给该函数或方法的调用者,如果它的调用者也都不捕获处理,那么最后程序会出现运行期错误。
相关TAG标签
上一篇:《从零开始学Swift》学习笔记(Day 55)——使用try?和try!区别
下一篇:欧盟委员会同意加大网络安全工作资金投入
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站