当前位置: 首页 > news >正文

Swift基础--Swift中的异常处理

Swift中的异常处理

  • OC中的异常处理:方法的参数要求传入一个error指针地址,方法执行完后,如果有错误,内部会给error赋值
  • Swift中的异常处理:有throws的方法,就要try起来,然后do {}catch {do中出现错误异常才执行这里的代码}进行处理

762322-20160628002513843-587913483.png

  • 格式:
        do {

            try 有throws的方法

        } catch {

        }
  • Swift中异常处理的三种方式
    • try : 正常处理,必须用到do {} catch {}
    • try! : 告诉系统一定没有异常,也就是说不用do catch来处理,开发中不建议用.一旦有异常,程序崩溃
    • try? : 告诉系统可能有异常,也可能没有异常.如果没有异常,系统会自动将结果包装成一个可选类型给你,如果有异常,系统会返回nil.如果使用try?可以不是同do catch进行处理
  • 项目中的代码
        do {
            let objc = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments) as! [[String : AnyObject]]

            // 3.遍历字典数组,创建子控制器
            for dict in objc {

                guard let title = dict["title"] as? String else {
                    return
                }
                guard let vcName = dict["vcName"] as? String else {
                    return
                }
                guard let imageName = dict["imageName"] as? String else {
                    return
                }

                addChildViewController(vcName, title: title, normalImage: imageName)
            }

        } catch {
            // json数据异常,以默认方式创建控制器

            self .addChildViewController("HomeTableViewController", title: "首页", normalImage: "tabbar_home")
            self .addChildViewController("MessageTableViewController", title: "消息", normalImage: "tabbar_message_center")
            self .addChildViewController("NullViewController", title: "", normalImage: "")
            self .addChildViewController("DiscoverTableViewController", title: "发现", normalImage: "tabbar_discover")
            self .addChildViewController("ProfileTableViewController", title: "我", normalImage: "tabbar_profile")

        }

转载于:https://www.cnblogs.com/gchlcc/p/5621994.html

相关文章:

  • 【iCore3 双核心板_ uC/OS-III】例程十一:任务消息队列
  • id 选择器
  • MYSQL 专家 ----zhaiwx_yinfeng
  • iOS开发-面试总结(六)笔试(二)
  • HoloToolkit项目源码剖析 - Spatial Mapping功能实现
  • html form post/get
  • 阿里云服务器Linux CentOS安装配置(四)yum安装tomcat
  • 3.saltstack模块介绍
  • Dedecms去掉URL中a目录的方法
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 查看进程命令
  • 『Java』Servlet 最简教程
  • 获取微信openid
  • Obsolete此API即将移除
  • Colorful Image Colorization 的环境配置
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • Android Studio:GIT提交项目到远程仓库
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • Date型的使用
  • gulp 教程
  • js递归,无限分级树形折叠菜单
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • 从伪并行的 Python 多线程说起
  • 分享一份非常强势的Android面试题
  • 基于游标的分页接口实现
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 说说我为什么看好Spring Cloud Alibaba
  • 整理一些计算机基础知识!
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #WEB前端(HTML属性)
  • (14)Hive调优——合并小文件
  • (16)Reactor的测试——响应式Spring的道法术器
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (补)B+树一些思想
  • (原創) 未来三学期想要修的课 (日記)
  • (转)视频码率,帧率和分辨率的联系与区别
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .Net CF下精确的计时器
  • .Net CoreRabbitMQ消息存储可靠机制
  • .net MySql
  • .NET 常见的偏门问题
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • @拔赤:Web前端开发十日谈
  • [Android] Implementation vs API dependency
  • [C#]winform制作圆形进度条好用的圆环圆形进度条控件和使用方法
  • [C++]unordered系列关联式容器
  • [CSS]浮动
  • [emacs] CUA的矩形块操作很给力啊
  • [flask] flask的基本介绍、flask快速搭建项目并运行
  • [HDU]2161Primes
  • [LeetCode] 197. 上升的温度
  • [LeetCode]Max Points on a Line
  • [Linux_IMX6ULL应用开发]-Makefile