go defer panic recover

golang沒有try...catch...的異常處理結構,而是使用defer、panic、recover來進行異常處理。golang

一、defer,從字面上就是延遲、延期,就是將defer後面的方法延遲到包裹該方法的方法執行返回再執行。函數

  

  

  從上面一段代碼能夠看出defer有如下特性:性能

  1)defer將方法壓入棧中,並最後執行spa

  2)多個defer時,聽從後進先出的原則blog

  3)defer是將順序運行到該方法時的狀態延遲,效果能夠看i值的變化for循環

  4)defer的壓棧和出棧存在性能損耗,避免將defer寫在for循環內部循環

二、panic,系統沒法處理的嚴重錯誤。程序

  

  

  當程序運行報錯的時候,咱們能夠看到提示上會出現panic的標識。固然咱們也能夠顯示的使用panic函數,但當咱們顯示使用時,其後面的代碼將不運行。方法

   

三、recover()用來捕獲異常,至關與catch,但recover必須再defer方法內才能生效。im

   

  

相關文章
相關標籤/搜索