咖啡伴侶

          呆在上海
          posts - 163, comments - 156, trackbacks - 0, articles - 2

          恐慌(Panic)和恢復(fù)(Recover)

          Posted on 2013-07-30 10:59 oathleo 閱讀(438) 評論(0)  編輯  收藏 所屬分類: Golang
          恐慌(Panic)和恢復(fù)(Recover)
          Go 沒有像Java 那樣的異常機(jī)制,例如你無法像在Java 中那樣拋出一個異常。作為替
          代,它使用了恐慌和恢復(fù)(panic-and-recover)機(jī)制。一定要記得,這應(yīng)當(dāng)作為最后的
          手段被使用,你的代碼中應(yīng)當(dāng)沒有,或者很少的令人恐慌的東西。這是個強(qiáng)大的工具,
          明智的使用它。那么,應(yīng)該如何使用它呢。
          下面的描述來自于[7]:
          Panic
          是一個內(nèi)建函數(shù),可以中斷原有的控制流程,進(jìn)入一個令人恐慌的流程中。當(dāng)函
          數(shù)F 調(diào)用panic,函數(shù)F 的執(zhí)行被中斷,并且F 中的延遲函數(shù)會正常執(zhí)行,然
          后F 返回到調(diào)用它的地方。在調(diào)用的地方,F(xiàn) 的行為就像調(diào)用了panic。這一過
          程繼續(xù)向上,直到程序崩潰時的所有g(shù)oroutine 返回。
          恐慌可以直接調(diào)用panic 產(chǎn)生。也可以由運(yùn)行時錯誤產(chǎn)生,例如訪問越界的數(shù)
          組。
          Recover
          是一個內(nèi)建的函數(shù),可以讓進(jìn)入令人恐慌的流程中的goroutine 恢復(fù)過來。recover
          僅在延遲函數(shù)中有效。
          在正常的執(zhí)行過程中,調(diào)用recover 會返回nil 并且沒有其他任何效果。如果
          當(dāng)前的goroutine 陷入恐慌,調(diào)用recover 可以捕獲到panic 的輸入值,并且
          恢復(fù)正常的執(zhí)行。
          主站蜘蛛池模板: 上蔡县| 仲巴县| 延长县| 武宣县| 余姚市| 文水县| 无极县| 清原| 和硕县| 莱西市| 合江县| 凤翔县| 珲春市| 岳西县| 海宁市| 南平市| 勐海县| 临泉县| 西乡县| 龙川县| 重庆市| 惠东县| 远安县| 新兴县| 伊宁县| 永宁县| 西昌市| 德化县| 武安市| 汤阴县| 三河市| 无棣县| 景德镇市| 都匀市| 祁门县| 余江县| 南木林县| 石楼县| 马山县| 衡水市| 淳安县|