Swift 2.0 提供的异常处理应该怎么用呢?

问答User • 于 2015-10-08 08:55:08 +0800 • 最后由 dugege2015-10-08 20:57:24 +0800 3495 阅读

例如我这个 json,我只会这样写,似乎没发挥它的用处啊 swift do { let json = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as! NSDictionary } catch let error as NSError { debugPrint(error) } 好像这样和直接让程序挂掉没什么区别啰......

回复: 7
  • iBcker 2015-10-08 09:30:23 +0800

    如果捕获这样理解是不是就明朗了

    ``` do { let json = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as! NSDictionary self.fillTableView(json) } catch let error as NSError { debugPrint(error) self.showErrorView() }

    ```

  • dugege 2015-10-08 09:37:19 +0800

    我理解try大法一般有两种作用 1. 防止意料之外的crash 2. catch里面做想做的事

    记得以前写java代码,逻辑太复杂了就直接加个try,安全第一··啊哈哈哈哈哈哈哈哈哈哈,不过写iOS之后就很少这么干了,不过必要的时候也可以用,特别是写hack代码的时候,很多时候没法保证以后的安全,就加个try

  • hugrup 2015-10-08 19:57:20 +0800

    和其他语言区别不大,把可能出错的部分包起来,catch里面做出错的处理。要只要,让公司程序直接挂掉会成罪人的··KPI你懂的···

  • User 2015-10-08 20:50:16 +0800

    @iBcker 用在调试上 :bowtie:

  • User 2015-10-08 20:52:59 +0800

    @dugege 那应该少用 try ?当自己无法掌控时再用,嗯

  • User 2015-10-08 20:56:27 +0800

    @hugrup 可否理解为 try 可以帮助偷懒 :smirk: 。 个人的程序应该尽量少用

  • dugege 2015-10-08 20:57:24 +0800

    @User 嗯,就像你举的例子,data转为json对象风险是不可控的,因为你不知道服务器返回来的json字符串会不会有问题。所以加个try是合理的选择,不然你想,如果服务器返回来的格式有点问题,你的APP就直接挂掉了,老板不得KO了你?所以必要的容错是不能省的,永远别信任服务器~

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,见 Emoji cheat sheet
  • @name 会链接到用户页面,并会通知他
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
Ctrl+Enter