亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > 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的堆棧信息操作的相關信息資訊供網民參考!
  • 推薦文章
    久久精品欧美一区二区| 四虎久久影院| 午夜激情视频在线播放| 国产视频网站在线观看| 国产视频一区二区三区四区| 可以免费看毛片的网站| 麻豆系列 在线视频| 中文字幕97| 国产高清视频免费观看| 999精品在线| 国产成人精品在线| 在线观看导航| 九九九在线视频| 欧美激情在线精品video| 韩国毛片 免费| 青青青草视频在线观看| 国产一区二区精品| 成人高清免费| 日韩av东京社区男人的天堂| 国产一区免费观看| 精品美女| 99热精品在线| 二级特黄绝大片免费视频大片| 日本免费看视频| 午夜在线观看视频免费 成人| 午夜在线亚洲男人午在线| 青青青草视频在线观看| 国产成人啪精品| 一级女性全黄久久生活片| 国产一区二区精品| 欧美大片aaaa一级毛片| 美国一区二区三区| 欧美1区| 欧美爱爱动态| 尤物视频网站在线| 国产福利免费视频| 亚洲精品永久一区| 久久精品大片| 成人av在线播放| 99热精品在线| 国产一区二区精品久久91| 亚洲精品中文一区不卡 | 日韩中文字幕在线观看视频| 国产不卡福利| 国产一区二区精品| 麻豆网站在线看| 国产成人精品影视| 精品视频免费在线| 欧美国产日韩久久久| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 精品在线视频播放| 久久国产精品只做精品| 在线观看导航| 久久国产影院| 欧美a免费| 国产美女在线一区二区三区| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | a级黄色毛片免费播放视频| 国产不卡在线观看视频| 国产伦久视频免费观看 视频| 免费一级片在线| 亚洲天堂免费| 国产韩国精品一区二区三区| 九九精品在线播放| 亚洲女人国产香蕉久久精品| 欧美爱爱动态| 欧美大片aaaa一级毛片| 午夜欧美成人久久久久久| 夜夜操网| 国产a视频| 国产91素人搭讪系列天堂| 日韩欧美一二三区| 一级女性全黄生活片免费| 精品在线免费播放| 久草免费资源| 精品视频免费看| 久久99青青久久99久久| 国产麻豆精品免费视频| 久久成人性色生活片| 色综合久久天天综合观看| 99热热久久| 国产原创视频在线| 国产亚洲精品aaa大片| 91麻豆精品国产自产在线观看一区 | 日韩一级精品视频在线观看| 999精品视频在线| 欧美激情一区二区三区在线| 国产网站免费视频| 韩国毛片免费| 亚洲精品久久久中文字| 日韩在线观看网站| 亚洲第一色在线| 日日日夜夜操| 可以免费看污视频的网站| 欧美大片aaaa一级毛片| 日韩专区亚洲综合久久| 国产激情一区二区三区| 国产91素人搭讪系列天堂| 成人免费观看网欧美片| 一级毛片视频播放| 国产伦久视频免费观看 视频| 精品久久久久久影院免费| 日日夜夜婷婷| 国产伦久视频免费观看 视频| 麻豆网站在线免费观看| 日韩一级黄色| 99色精品| 麻豆网站在线免费观看| 亚洲 男人 天堂| 久久99这里只有精品国产| 精品视频免费看| 国产伦理精品| 91麻豆精品国产自产在线观看一区 | 一级毛片视频播放| 精品国产亚洲人成在线| 精品国产一区二区三区久| 91麻豆国产| 91麻豆tv| 91麻豆精品国产高清在线| 午夜在线亚洲| 日韩一级黄色| 亚洲精品永久一区| 精品视频一区二区| 国产伦精品一区二区三区无广告| 国产成人女人在线视频观看| 成人在激情在线视频| 免费国产在线视频| 日日日夜夜操| 成人高清免费| 黄视频网站免费看| 99久久精品国产片| 午夜在线影院| 欧美激情伊人| 香蕉视频亚洲一级| 九九久久99| 亚久久伊人精品青青草原2020| 青青青草视频在线观看| 亚洲爆爽| 成人a大片高清在线观看| 成人免费高清视频| 欧美大片aaaa一级毛片| 日本在线不卡免费视频一区| 欧美激情一区二区三区中文字幕| 亚欧成人毛片一区二区三区四区| 亚洲第一页乱| 国产亚洲精品aaa大片| 91麻豆精品国产自产在线观看一区 | 成人影院久久久久久影院| 九九精品久久久久久久久| 成人免费观看男女羞羞视频| 韩国毛片免费| 黄视频网站在线看| 午夜欧美成人久久久久久| 欧美激情伊人| 精品视频在线观看视频免费视频| 日韩在线观看免费| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产视频网站在线观看| 超级乱淫黄漫画免费| 99热精品在线| 精品久久久久久影院免费| 久久久成人网| 精品久久久久久中文字幕2017| 欧美一区二区三区在线观看| 四虎影视精品永久免费网站| 一级毛片视频播放| 国产亚洲免费观看| 韩国毛片免费| 青青久久精品| 亚洲第一页乱| 一本高清在线| 午夜欧美福利| 国产a视频| 色综合久久天天综合观看| 亚欧成人毛片一区二区三区四区| 午夜欧美成人久久久久久| 日本特黄特色aaa大片免费| 一级毛片视频在线观看| 在线观看导航| 国产a视频| 韩国毛片免费| 二级特黄绝大片免费视频大片| 青青青草视频在线观看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 97视频免费在线| 免费一级片在线| 沈樵在线观看福利| 九九精品在线播放| 精品国产一区二区三区久| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 天天做日日爱| 国产成人精品影视| 久久国产精品只做精品| 91麻豆tv| 精品视频在线观看一区二区| 一级毛片视频在线观看| 日韩一级精品视频在线观看| 色综合久久手机在线| 99热精品在线| 香蕉视频亚洲一级|