Go學習筆記:panic()和recover()
如何理解:
1、呼叫panic函式相當於throw一個異常,逐層啟動異常處理流程。在呼叫panic之前defer的操作會在呼叫panic後立即執行。
2、呼叫recover函式相當於catch了異常,會中止異常處理流程,並可以返回這個異常。
3、panic函式接受一個引數,任意型別,無返回值;
4、recover函式沒有引數,返回值就是異常本身;
5、一般,recover函式放在defer後面的一個匿名函式中執行。個人認為還應該放在函式的首部;
一個例子
package main
import (
"fmt"
)
func work() {
Log(10)
panic("ERROR!")
Log(100)
}
func Log(args ...interface{}) {
fmt.Println(args...)
}
func main() {
defer func() {
if r := recover(); r != nil {
Log(r)
}
}()
work()
}
相關推薦
Go學習筆記:panic()和recover()
如何理解: 1、呼叫panic函式相當於throw一個異常,逐層啟動異常處理流程。在呼叫panic之前defer的操作會在呼叫panic後立即執行。 2、呼叫recover函式相當於catch了異常,會中止異常處理流程,並可以返回這個異常。 3、panic函式接受一個引數,
JavaWeb學習筆記:ServletConfig()和ServletContext()
通過 metadata ips rac oid enume 節點 接口 init ServletConfig()和ServletContext() 1.Serv
linux學習筆記:nano 和 cat
lazy print ID scrip light OS 文件的 UC 執行 學習內容來自莫煩python:linux教程 nano nano 是 linux 的一款文字編輯工具. 我們可以拿它來做最基本的 terminal 端的文本編輯, 甚至可以寫代碼~ 下面我們用
effectiveJava學習筆記:類和介面(一)
一、使類和成員的可訪問性最小化 對於類 對於類,只有public和package-private兩種訪問級別。package-private是預設的,也就是預設的。 1.對於頂層的類來說,只有包級私有和公有兩種可能,區別是包級私有意味著只能在當前包中使用,不會成為匯出api的一部分,而公
OpenGL學習筆記:GLAD和第一個視窗
環境 系統:Windows10 64位 家庭中文版 IDE:Visual Studio 2017 專業版 參考教程:https://learnopengl-cn.github.io/01 Getting started/03 Hello Window/ 步驟 1.獲取GLAD
Go學習筆記陣列切片和容器(五)
func main() { //定義陣列 數量在型別的前面 var arr [5] int // 不定義值為0 arr1 := [3]int{1} // := 必須賦值 最少賦值1位 arr2 := [...]int{4,5,6,7,8} //...可不規定長度 //二維陣列 var
Go 學習筆記:Println 與 Printf 的區別,以及 Printf 的詳細用法
Println 與Printf 都是fmt 包中的公共方法,在需要列印資訊時需要用到這二個函式,那麼這二個函式有什麼區別呢? Println :可以打印出字串,和變數 Printf : 只可以打印出格式化的字串,可以輸出字串型別的變數,不可以輸出整形變數和整
go學習筆記:2.變數、型別、常量
基本型別 1.基本型別列表 複製程式碼程式碼如下: 型別 長度 說明 bool 1 true/false,預設false, 不能把非0值當做true(不用數字代表true/false) byte
Python學習筆記:輸入和輸出
本文來自:入門指南 開胃菜參考:開胃菜 使用Python直譯器:使用Python直譯器 本文對Python的簡介:Python簡介 Python流程介紹:深入Python流程 Python資料結構:Python資料結構 Python:模組:Pytho
一、Go學習筆記:安裝與配置
Mac、Windows與Linux平臺下如何下載安裝Go,及其工作區配置 本系列學習筆記均改編自Go語言中文網,其中的教程是翻譯自國外教程,其中有一些語句翻譯不通難以理解。故對其進行整理並在本系列教程中加入了自己的理解和程式碼示例。 為什麼學習Go這裡我
opencv學習筆記:RotatedRect和CvBox2D的角度疑雲
在使用opencv的過程中經常會使用minAreaRect返回一個輪廓的外接矩形,它返回的是一個RotatedRect的類: class CV_EXPORTS RotatedRect { public: //! various constructor
二、Go學習筆記:HelloWorld示例及工作目錄
瞭解GOPATH目錄下的目錄結構 ,對於初學者而言只需瞭解src就行。 |- WorkSpace |- src |- pkg |- bin 本系列學習筆記部分改編自Go語言中文網,其中的教程是翻譯自國外教程,其中有一些語句翻譯不通難以理解。故
GO 學習筆記 (三) : method 和 interface
為了面向物件(首先你得有個物件) method 定義一個method type Person struct { name string age int } func (p
Go學習筆記:json處理
Encode 將一個物件編碼成JSON資料,接受一個interface{}物件,返回[]byte和error: func Marshal(v interface{}) ([]byte, error) Marshal函式將會遞迴遍歷整個物件,依次按成員型別對這個物件進
Go基礎系列:defer、panic和recover
pre 也會 副本 r語 tro 釋放資源 goroutine rec learn defer關鍵字 defer關鍵字可以讓函數或語句延遲到函數語句塊的最結尾時,即即將退出函數時執行,即便函數中途報錯結束、即便已經panic()、即便函數已經return了,也都會執行def
JavaScript學習筆記:數組的sort()和reverse()方法
content 參數 n) strong true 知識 efi 調整 數字 在實際的業務當中,很多時候要對定義好的數組重新排序。在JavaScript中自帶了兩個方法,可以對數組進行排序操作。這兩個方法就是sort()和reve
javascript學習筆記:DOM節點關系和操作
seq 文本節點 文檔 use true 添加節點 check iss pen 0x01:前面的話 DOM可以將任何HTML描繪成一個由多層節點構成的結構。節點分為12種不同類型,每種類型分別表示文檔中不同的信息及標記。每個節點都擁有各自的特點、數據和方法,也與其他節點存在
linux學習筆記:基本指令mkdir, rmdir 、和rm
pytho mil 註意 folder 執行 dir 不同 情況 我們 #學習內容來自莫煩python mkdir 建立文件夾 mkdir (make directory) 就是創建一個文件夾的意思, 使用起來很簡單. $ mkdir folder2 如果你想在這個目錄給
MySQL學習筆記:刪除存儲過程和函數
class pan 防止 mysql學習 col div pre 註意 warnings 刪除存儲過程、存儲函數主要使用drop語句: drop procedure —— 刪除存儲過程 drop function —— 刪除存儲函數 語法: DROP {P
javaEE學習筆記:maven下載和安裝(1)
本文只作學習筆記,僅代表個人觀點,若有雷同,純屬巧合; 工具:編輯器Eclipse,Tomcat7.0(下載地址:https://tomcat.apache.org/) JDK1.8版本 第一步:官網下載地址: http://maven.apache.org/download.cgi