原创文章,欢迎转载。转载请注明:关东升的博客
Swift 1.x的错误处理模式存在很多弊端,例如:为了在编程时候省事,给error参数传递一个nil,或者方法调用完成后不去判断error是否为nil,不进行错误处理。
let contents = NSString(contentsOfFile: filePath, Êencoding: NSUTF8StringEncoding, error: nil)//error参数传递一个nil
或者
var err: NSError? let contents = NSString(contentsOfFile: filePath, Êencoding: NSUTF8StringEncoding, error: &err)
不好的编程习惯,由于Objective-C和Swift 1.x没有强制处理机制,因此一旦真的发生错误,程序就会发生崩溃。
同样的从文件中读取字符串示例,如果使用Swift 2错误处理模式代码如下:
import Foundation do { //要做一些操作 let str = try NSString(contentsOfFile: filePath, Êencoding: NSUTF8StringEncoding) //要尝试做的事情 } catch let err as NSError { //如果失败则进入catch代码块 err.description }
do-try-catch这种错误模式与Java中异常处理机制非常类似,本意就是尝试(try)做一件事情,如果失败则捕获(catch)处理。
捕获错误
完整的do-try-catch错误处理模式的语法如下:
do { try 语句 成功处理语句组 } catch 匹配错误{ 错误处理语句组 } 在try 语句
中可以产生错误,当然也可能不会产生错误,如果有错误发生,catch就会处理错误。catch代码块可以有多个,错误由哪个catch代码块处理是由catch后面的错误匹配与否而定的。错误类型的多少就决定了catch可以有多少。我们先介绍一下错误类型。
错误类型
在Swift中错误类型必须遵从ErrorType 协议,其次考虑到错误类型的匹配,它应该被设计成为枚举类型,枚举类型非常适合将一组相关值关联起来。
如果我们编写访问数据库表程序,实现对表数据插入、删除、修改和查询等操作,我们会需要类似如下代码的错误类型:
enum DAOError: ErrorType { case NoData case PrimaryKeyNull }
NoData表示没有数据情况,PrimaryKeyNull表示表的主键(Primary Key)为空情况。
那么我们就可以通过如下代码捕获错误。
do { //try 访问数据表函数或方法 } catch DAOError.NoData { print("没有数据。") } catch DAOError.PrimaryKeyNull { print("主键为空。") }
相关推荐
在处理可能抛出错误的操作时,Swift提供了一种优雅的异常处理机制,即`do-try-catch`结构。这个结构使得开发者能够以一种清晰、可读的方式来捕获和处理潜在的错误。 `do`块是`do-try-catch`结构的起点,它包含可能...
从零开始学swift,图灵原创,关东升著。基于swift2.x。2016年3月版
可能还包括错误处理机制,如使用do-catch来捕获并处理异常。同时,单元测试和集成测试的代码也是项目质量保证的重要部分,可能包含TestFlight或XCTest的相关代码。 为了构建和运行这个项目,我们需要Xcode IDE,它...
源码标签表明我们能够深入了解应用的内部工作原理,学习和借鉴其设计模式、架构以及处理特定问题的方法。 【压缩包子文件的文件名称列表】"nluchkin-Sosial-Blocks-497fe69"没有提供具体的文件列表,但通常一个iOS...
【描述】描述中的 "IOS应用源码——qtechnologycompany-OrbitPad-323cb53.rar" 同样强调了这是针对iOS平台的源代码,意味着我们可以深入研究其背后的编程语言(通常是Objective-C或Swift)、设计模式以及与iOS平台...
- **错误处理**:使用do-catch块处理Swift中的错误。 - **单元测试和持续集成**:使用Xcode内置的测试框架和Jenkins等CI工具。 通过分析和学习这个项目,开发者可以提升自己的iOS编程技能,理解实际项目中的最佳...
7. **错误处理和日志记录**: 学习如何有效地处理异常和记录应用日志。 8. **自动化构建和持续集成**: 如果包含Fastlane或其他CI/CD工具的配置,可以了解如何自动打包和部署应用。 总之,"IOS应用源码——unixpickle...
10. **错误处理**:学习如何使用`try-catch`语句或`NSError`来处理可能出现的问题。 通过这个源码包,你可以深入了解iOS开发的各个方面,提升你的编程技巧,并可能发现新的编程理念和技术。同时,这也为你提供了...
总的来说,"iOS实例开发源码——jacksinn-simon-442e226.zip"为我们提供了一个宝贵的iOS开发学习资源,涵盖了从基础语法到高级技术的诸多方面,是iOS开发者成长道路上的重要参考资料。通过深入研究这个项目,无论是...
对于iOS开发者来说,研究这样的源码可以帮助他们学习Swift或Objective-C(iOS应用开发的两种主要编程语言),了解iOS应用的设计模式,以及如何利用Apple的UIKit框架构建用户界面和处理事件。 在【压缩包子文件的...
开发者通常会通过`AppDelegate.swift`或`AppDelegate.m`文件来初始化应用,`Main.storyboard`或`ViewController.swift`/`ViewController.m`处理主界面,而`ViewController`和其他`Controller`类负责处理用户交互和...
总之,通过研究这个源代码,开发者不仅可以学习到iOS应用的基本结构和Swift编程技巧,还可以了解到游戏开发中的图形渲染、物理模拟、音频处理、网络通信等多个领域的技术细节。这对于提升iOS开发技能,特别是游戏...
通过研究这个源代码,开发者可以学习到iOS应用的开发流程,包括UI设计、网络请求、数据存储、动画效果、多线程处理、错误处理等知识点。同时,对于有经验的开发者来说,这是一个检查代码质量、优化性能或复用代码的...
9. **错误处理**:Swift支持强大的错误处理机制,源代码中可能会有try-catch结构来捕获和处理可能出现的异常情况。 10. **Xcode集成开发环境**:开发者可能使用Xcode进行项目构建、调试和测试,Xcode的使用技巧,如...
《iOS游戏应用源代码分析——基于pppoe-SnakeRPG-53c5c39.zip》 本文将深入探讨iOS游戏开发中的一个重要案例——pppoe-SnakeRPG项目,该项目的源代码位于提供的zip压缩包内。通过对源代码的解析,我们可以学习到iOS...
《iOS实例开发源码——JayDugger-Eclipse-Phase-Mind-Maps-5fa3a53》 这个压缩包文件"JayDugger-Eclipse-Phase-Mind-Maps-5fa3a53.zip"是针对iOS平台的一个实例开发项目,由开发者JayDugger创建。该资源包含了一组...
5. **错误处理**:任何应用都可能遇到错误,源码中应该包含了错误处理机制,例如使用Swift的do-catch语句来捕获并处理异常。 6. **测试与调试**:良好的测试实践也是优秀源码的一部分。项目可能包含了单元测试和...
【标题】"IOS应用源码——sroske-launch-it-cba4f99.rar" 提供的是一款基于iOS平台的应用程序源代码,其中包含了开发者在创建iOS应用时使用的全部源文件。这个压缩包可能是一个开源项目,或者是一个教学示例,用于...
《iOS实例开发源码——gooddoug-Cravenstar-16d97a2.zip》这个压缩包中包含的是一份iOS应用的源代码,它由开发者gooddoug创建,项目名为Cravenstar,版本号为16d97a2。这个项目可能是一个学习资源,也可能是一个实际...
【标题】"IOS应用源码——nevyn-overload-0.3-0-gae3b7f5.zip" 提供的是一份iOS应用的源代码,版本号为0.3,标识符为gae3b7f5。这个压缩包很可能包含了一个完整的iOS项目,开发者可能在其中实现了特定的功能或者用于...