异常 – Swift中的运行时错误处理
我完全知道
Swift没有一个try / catch机制来捕获异常(好的,Swift 2.0现在支持它们).我也明白,许多API方法返回一个NSError,如果发生错误,将会填充一个错误对象.所以请不要指出我这个问题:
Error-Handling in Swift-Language
但是这仍然不能解释如何对您自己的代码中的运行时错误做出反应,例如数组超出边界访问或强制展开无效的值为零.例如: var test: String? test = nil println(test!) //oops! 要么 var arr = [0,1,2] for i = 0...3 { println(arr[i]) //oops! } 每个程序员偶尔都会犯这样的错误,应该有一种方法,至少要记录下来以备后续分析.在调试时,Xcode可以向我们展示这些内容,但是如果这种情况发生在最终用户或beta测试人员身上?在纯C中有信号处理,也可以在Objective-C中使用.在斯威夫特有这样的东西吗?在应用程序死亡之前输入的集中式回调? 更新: 让我重新说一个问题:在一个大型项目中,手动检查每个循环上的上述错误和强制展开是不可行的.当运行时错误最终发生时,是否有回调像Objective C的segfault处理或NSSetUncaughtExceptionHandler将被调用,以便错误可以记录/电子邮件与崩溃的堆栈跟踪?
编辑:这个答案没有用swift 2.0更新.由于swift现在有错误处理我没有更新下面的答案.错误处理的一些方面将在将来使用swift 3.0进行更新.你可以按照这个答案
Error-Handling in Swift-Language
Swift被设为typeSafe语言.它在编译时会得到错误,而不是等待在运行时导致错误. 在第一个例子中,您使用可选. var test: String? 首先明白可选的含义.当你指定可选的时候,你说它可能是零或没有价值.当你解开测试时,你说我知道这个值不是nil.Please打开它我确信那是你的责任看看它在哪里.如果你不确定那比你应该使用可选绑定这里.当你不确定价值总是使用,如果条件,同时打破 if let notNilTest = test { //use notNilTest } else{ //handle error } 在第二个例子中,运行时异常处理应该是有意义的,但是如果条件具有count.So在第二个例子中可以很容易得到这个例子,作为开发人员,如果条件获得数组的数量,则应该使用它. 从快速指南:
他们清楚地提到这一点,你应该照顾这些东西,使你的代码减少错误.他们提供了一些事情,我们应该知道如何使用这些东西. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |