婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > golang 打印error的堆棧信息操作

golang 打印error的堆棧信息操作

熱門標簽:阿克蘇地圖標注 電話機器人軟件免費 excel地圖標注分布數據 外呼系統顯本地手機號 涿州代理外呼系統 百度地圖標注后傳給手機 外呼系統用什么卡 評價高的400電話辦理 壽光微信地圖標注

眾所周知,目前的golang error只關注Error()信息,而不關注它的堆棧路徑,對錯誤的定位大多數通過

log.SetFlags(log.Llongfile| log.LstdFlags)
log.Println(e)

一旦代碼分層,為了定位錯誤,可能出現每一個層次的同一個error,都得log好幾次,比如:

func DB()error{
	return errors.New("time out")
}
func Dao()error{
    if er:= DB();er!=nil{
    	 log.Println(er)
    	 return error
    }
    return nil
}
func Service()error{
    if er:= Dao();er!=nil{
    	 log.Println(er)
    	 return error
    }
    return nil
}
func Control()error{
    if er:= Service();er!=nil{
    	 log.Println(er)
    	 return error
    }
    return nil
}    

如何一次性拋出錯誤,把該錯誤的堆棧全部都拿住呢

以模擬一次請求-分發-服務-數據庫操作為例:

package main
import (
	"errors"
	"fmt"
	"github.com/fwhezfwhez/errorx"
)
func main() {
	if e := Control(); e != nil {
		e.(errorx.Error).PrintStackTrace()
		// log.Println(e.(errorx.Error).StackTrace())
	} else {
		Reply()
	}
}
// assume an engine to connect mysql
func DB() error {
	return errors.New("connect to mysql time out")
}
// handle database operation
func Dao() error {
	if er := DB(); er != nil {
		return errorx.New(er)
	}
	return nil
}
// handle logic service
func Service() error {
	if er := Dao(); er != nil {
		return errorx.Wrap(er)
	}
	return nil
}
// handle request distribute from main
func Control() error {
	if er := Service(); er != nil {
		return errorx.ReGen(er, errors.New("inner service error,please call admin for help"))
	}
	return nil
}
// reply a the request
func Reply(){
	fmt.Println("handle success")
}

執行結果:

StackTrace | CausedBy

G:/go_workspace/GOPATH/src/errorX/example/main.go: 26 | connect to mysql time out

G:/go_workspace/GOPATH/src/errorX/example/main.go: 34 | connect to mysql time out

G:/go_workspace/GOPATH/src/errorX/example/main.go: 42 | inner service error,please call admin for help

補充:golang 異常退出堆棧捕獲

利用golang自帶包 runtime/debug 異常時打印

DebugInfo.go

package main
import (
    "fmt"
    "os"
    "runtime/debug"
    "time"
)
func TryE() {
    errs := recover()
    if errs == nil {
        return
    }
    exeName := os.Args[0] //獲取程序名稱
    now := time.Now()  //獲取當前時間
    pid := os.Getpid() //獲取進程ID
    time_str := now.Format("20060102150405")                          //設定時間格式
    fname := fmt.Sprintf("%s-%d-%s-dump.log", exeName, pid, time_str) //保存錯誤信息文件名:程序名-進程ID-當前時間(年月日時分秒)
    fmt.Println("dump to file ", fname)
    f, err := os.Create(fname)
    if err != nil {
        return
    }
    defer f.Close()
    f.WriteString(fmt.Sprintf("%v\r\n", errs)) //輸出panic信息
    f.WriteString("========\r\n")
    f.WriteString(string(debug.Stack())) //輸出堆棧信息
}

測試異常捕獲 main.go

package main
import (
    "fmt"
    "time"
)
func main() {
    defer TryE()
    fmt.Println(time.Now())
    panic(-2)
    fmt.Println("panic restore now, continue.")
}

查看堆棧可以定位main 里第11行拋出異常-2.

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • GO語言標準錯誤處理機制error用法實例
  • Go 自定義error錯誤的處理方法
  • 淺談Go語言的error類型
  • 淺析golang開發Error的使用詳解
  • Go應用中優雅處理Error的技巧總結

標簽:汕頭 銅川 欽州 蘭州 吐魯番 雞西 梅河口 重慶

巨人網絡通訊聲明:本文標題《golang 打印error的堆棧信息操作》,本文關鍵詞  golang,打印,error,的,堆棧,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《golang 打印error的堆棧信息操作》相關的同類信息!
  • 本頁收集關于golang 打印error的堆棧信息操作的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩欧美一级片| 亚洲天堂av老司机| 91蝌蚪porny成人天涯| 欧美日韩精品欧美日韩精品一| 精品久久久影院| 国产一区亚洲一区| 欧美变态tickling挠脚心| 国产精品久久三区| 日韩av在线播放中文字幕| 91国产丝袜在线播放| 欧美在线观看你懂的| 亚洲免费三区一区二区| 97久久久精品综合88久久| 国产精品视频观看| 国产毛片精品国产一区二区三区| 久久福利资源站| 欧美国产成人精品| 国产亚洲精品bt天堂精选| 亚洲欧洲综合另类| 久久精品欧美一区二区三区不卡| 欧美成人伊人久久综合网| 欧美一区二区久久久| 国产精品1区2区3区在线观看| 成人性生交大合| 国产精品99久久不卡二区| 国产精品亚洲专一区二区三区 | 欧美色电影在线| 国产成人自拍高清视频在线免费播放| zzijzzij亚洲日本少妇熟睡| 国产精品丝袜久久久久久app| 欧美天堂亚洲电影院在线播放| 91国产丝袜在线播放| 美女一区二区三区在线观看| 国产一区在线看| 国产一区二区精品久久| 国产一区亚洲一区| 成人亚洲一区二区一| 91一区二区三区在线观看| 在线观看av不卡| 日韩一区二区免费电影| 精品88久久久久88久久久| 国产精品久久久久久久久动漫| 国产精品国模大尺度视频| 久久久久久久久99精品| 亚洲日韩欧美一区二区在线| 午夜一区二区三区在线观看| 久久国产精品72免费观看| 大胆欧美人体老妇| 色综合天天综合色综合av| 在线电影欧美成精品| 2021久久国产精品不只是精品| 欧美激情在线一区二区| 在线免费观看成人短视频| 亚洲午夜在线电影| 高清在线成人网| 经典三级在线一区| 99久久精品国产毛片| 91麻豆国产香蕉久久精品| 欧美图区在线视频| 欧美日韩国产精品成人| 日韩视频一区二区| 久久久欧美精品sm网站| 国产精品国产三级国产aⅴ原创 | 亚洲乱码国产乱码精品精可以看 | 国产高清一区日本| 麻豆精品一区二区综合av| 青青草97国产精品免费观看| 日本亚洲欧美天堂免费| 午夜精品久久久久影视| 亚洲一区在线观看网站| 亚洲成人激情av| 国产精品传媒在线| 国产精品久久久久四虎| 日韩一区欧美二区| 日韩电影免费在线| 三级欧美在线一区| 日韩一区在线免费观看| 亚洲综合精品久久| 一区二区三区在线播放| 2023国产精华国产精品| www国产亚洲精品久久麻豆| 国产精品家庭影院| 日日骚欧美日韩| 亚洲成av人片在www色猫咪| 亚洲精品国产a| 中文字幕中文字幕一区二区 | 精品国产一区二区在线观看| 中文字幕成人av| 国产精品三级在线观看| 午夜不卡av免费| 欧美性极品少妇| 色悠久久久久综合欧美99| 色欧美乱欧美15图片| 精品国产一区二区三区av性色| 奇米影视在线99精品| 欧美性淫爽ww久久久久无| 日韩美女啊v在线免费观看| 狠狠色丁香久久婷婷综合丁香| 欧美伊人精品成人久久综合97| 亚洲欧美色图小说| 欧美一区二区视频在线观看| 一区二区三区中文在线| 日本高清不卡视频| 国产69精品一区二区亚洲孕妇| 久久久综合精品| 日韩一区二区在线看片| 国产精品欧美一级免费| 丝袜美腿成人在线| 日韩中文欧美在线| 色婷婷综合久久| 欧美第一区第二区| 国产精品你懂的在线欣赏| 成人av免费在线观看| 精品福利一二区| 精久久久久久久久久久| 亚洲国产精华液网站w| 国内成人自拍视频| 中文字幕一区二区三区四区 | 国产一区二区三区免费播放| 国产精品乱人伦一区二区| 国产高清一区日本| 日韩欧美在线影院| 国产麻豆成人精品| 日本一区二区成人在线| 日韩一区二区在线观看| 天天影视涩香欲综合网| 亚洲一区二区三区四区在线免费观看| 99riav久久精品riav| 国产精品美女久久久久aⅴ| 91丨porny丨国产| 日本大胆欧美人术艺术动态| 2020国产精品自拍| 国产成人精品www牛牛影视| 亚洲精品成a人| 日韩精品一区二区三区四区视频| 国产麻豆成人精品| 一区二区三区资源| 欧美电影影音先锋| 久久国产精品露脸对白| 国产女同性恋一区二区| www.亚洲色图| 一区二区三区av电影| 日韩一区二区视频在线观看| 一区二区三区在线视频免费| 国产精一区二区三区| 国产精品18久久久久久久久久久久| 国产日韩精品一区二区三区| 国产一区二区三区在线观看免费 | 五月婷婷综合网| 亚洲精品一区二区三区四区高清 | 天堂久久一区二区三区| 日韩精品在线一区| 日韩欧美一区在线| 亚洲福利一区二区| 国产亚洲精品福利| 欧美中文字幕不卡| 日韩成人一级大片| 国产精品77777竹菊影视小说| 欧美一区二区视频观看视频| 欧美一级高清片| 欧美一区二区观看视频| 五月婷婷另类国产| 国产精品入口麻豆原神| 欧美一二三区在线观看| 日本女人一区二区三区| 国产精品国产三级国产普通话蜜臀| 91麻豆精品国产91久久久资源速度| 91免费看`日韩一区二区| 国产精品国产三级国产有无不卡 | 亚洲夂夂婷婷色拍ww47| 久久一日本道色综合| 91麻豆国产精品久久| 欧美精品少妇一区二区三区| 国产成人三级在线观看| 日韩电影一区二区三区四区| 国产精品九色蝌蚪自拍| 91精品国产全国免费观看| 免费成人av资源网| 亚洲码国产岛国毛片在线| 国产色婷婷亚洲99精品小说| 欧美一区二区三区免费观看视频 | 成人在线视频首页| 国产在线视频一区二区三区| 国内一区二区在线| 美国欧美日韩国产在线播放| 奇米影视一区二区三区| 日韩黄色一级片| 国内精品久久久久影院薰衣草 | 成人小视频在线观看| 成人a免费在线看| caoporen国产精品视频| 91在线观看污| 波多野结衣中文字幕一区| 成人国产亚洲欧美成人综合网| 风间由美性色一区二区三区| 福利一区二区在线| 国产成人av电影| 成人av网址在线| 色屁屁一区二区| 欧美一区二区日韩一区二区|