try? try! try do catch try 使用详解

当一个使用一个方法发现后面 throws  说明可能会抛出异常 需要try 进行处理 

1  try? 如果解析成功就有值 否则返回nil  (推荐)

2  try! 如果解析成功就有值  否则直接崩溃 (不推荐)

3  try 如果 如果解析成功就有值  如果出错 能够处理异常 输出错误 do try catch

4 oc 中 ARC 开发自动添加 release autorelease  retain   如果用try catch 一旦不平衡就会出现内存泄漏

复制代码
       
        let jsonStr = "{\"name\":.\"上官\"}"
        
        let data = jsonStr.data(using: .utf8)
        
        // try? 如果解析成功就有值 否则返回nil  (推荐)
        let json = try? JSONSerialization.jsonObject(with: data!, options: [])
        
        // try! 如果解析成功就有值  否则直接崩溃 (不推荐)
        
        let json0 = try! JSONSerialization.jsonObject(with: data!, options: [])
//
//        // try 如果 如果解析成功就有值  如果出错 能够处理异常 输出错误 do try catch
//        
        do {
            let json1 = try JSONSerialization.jsonObject(with: data!, options: [])
             print( json1 )
        } catch  {
             print(error)
        }
//        print( json )
复制代码

 

posted @   ZhangShengjie  阅读(497)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示