Swift学习_自定义Log&异常捕捉

Swift

1.自定义Log

// 1.获取打印所在的文件(例如:ViewController.swift)
// lastPathComponent:获取最后一个路径
let file = (#file as NSString).lastPathComponent
    
// 2.获取打印所在的方法(例如:viewDidLoad())
let funcName = #function
    
// 3.获取打印所在行数(例如22)
let lineNum = #line

要想在Swift中使用DEBUG,需要在Build Settings中设置一些东西,如下图:


设置DEBUG
将以下代码写在AppDelegate.swift中,写成全局函数,就可以在其他地方调用了
// T是动态类型
func SHLog<T>(message: T,file:String = #file,funcName:String = #function,lineNum:Int = #line){
    
    #if DEBUG       // Build Settings --> swift flags --> 在debug后点击+ --> -D 自己起的名字
    
    let fileName = (file as NSString).lastPathComponent
    
    print("\(fileName):(第\(lineNum)行) - \(message)")
    //        print("\(fileName):[\(funcName)](\(lineNum)) - \(message)")   // 会打印函数名
    
    #endif
}

2.Swift中异常处理

如果在调用系统某一个方法时,该方法最后有一个throws,说明该方法会抛出异常,那么需要对该异常进行处理

Swift中提供了三种处理异常的方式
1.try方式 程序员手动捕捉异常
let pattern = "abc"
do{
    let regex = try NSRegularExpression(pattern: pattern, options: .caseInsensitive)
}catch{
    catch:捕捉异常
    error:异常的对象
    print(error)
}
2.try?方式 系统帮助我们处理异常,如果该方法出现了异常,则该方法返回nil;如果没有异常,则返回对应的对象
let pattern = "abc"
guard let regex = try? NSRegularExpression(pattern: pattern, options: .caseInsensitive) else{
    return
}
3.try!方式(不建议,非常危险) 直接告诉系统,该方法没有异常。注意:如果该方法出现了异常,那么程序会报错(崩溃)
let pattern = "abc"
let regex = try! NSRegularExpression(pattern: pattern, options: .caseInsensitive)

}


代码已上传至git:
--> 传送门:Swift_基本语法

附录

查看完整专栏《Swift学习》

有问题欢迎指正以及相互探讨 —— CoderSun

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,508评论 4 61
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,975评论 19 139
  • 01 告离段落 一年一度的校优秀系组评审工作终于结束,S作为此次评审组长终于可以长长舒一口气了。接下来就是等待最终...
    付琴猫小鱼阅读 3,130评论 0 0
  • 平时对自己的要求比较高,想让自己多看看一些书籍,多学习知识,但是很多比如历史的,初看有兴趣,可是时间一长,我就忍受...
    向天葵阅读 1,882评论 0 0
  • 使用startActivityForResult()启动Activity时: 不能添加Intent.FLAG_AC...
    乐此不痞阅读 1,112评论 0 0

友情链接更多精彩内容