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

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

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

声明抛出错误方法示例代码以下:微信

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

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

 

在函数或方法中抛出错误网站

一个函数或方法可以声明抛出错误,是由于在函数或方法中产生并抛出了错误,这样函数或方法声明抛出错误才有实际的意义。spa

在产生并抛出错误方式:.net

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

  • 在函数或方法中调用的其余能够抛出错误函数或方法,可是没有捕获处理,会致使错误被传播出来。code

    示例代码以下:orm

//删除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语句捕获并处理,这样就致使了这个错误传播给该函数或方法的调用者,若是它的调用者也都不捕获处理,那么最后程序会出现运行期错误。

 

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

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

相关文章
相关标签/搜索