Go 語言 錯誤處理機制

2021-10-02 10:52:08 字數 1591 閱讀 1290

golang 沒有結構化異常,使用panic 丟擲錯誤,recover 捕獲錯誤

異常的使用場景簡單描述:go 中可以丟擲乙個panic的異常,然後再defer中通過recover捕獲這個異常,然後正常處理

舉個程式異常的栗子

package main

import

("fmt"

)func main()

// 報錯資訊:

panic: runtime error: integer divide by zero

goroutine 1

[running]

:main.

main()

d:/code/main.go:10+

0x11

可以看到錯誤資訊,是在第10行;

使用defer + recover 處理錯誤

package main

import

("fmt"

)func test()

}() i :

=100

j :=0

result :

= i / j

fmt.

println

("res="

, result)

}func main()

// 輸出如下:

err= runtime error: integer divide by zero

main

()函式...

.

go 程式中,也支援自定義錯誤,使用errors.new 和 panic 內建函式

errors.new(「錯誤說明」),返回乙個error 型別的值,表示乙個錯誤

panic 內建函式,接收乙個 inte***ce{}型別的值作為引數。可以接收 error型別的變數,輸出錯誤資訊,並退出程式

舉個栗子

package main

import

("errors"

"fmt"

)// 自定義錯誤機制

// 如果檔名傳入不正確, 就返回乙個自定義的錯誤

func readconf

(name string)

(err error)

else

}func test()

}func main()

// 輸出結果:

panic: 返回自定義錯誤資訊

goroutine 1

[running]

:main.

test

(...)d

:/code/main.go:

22main.

main()

d:/code/main.go:26+

0x113

錯誤處理機制

一直想對公司的錯誤處理機制進行思考和改進,今天查到如下乙個的答覆,很全面,特轉到這裡 錯誤處理機制一般都是自己定義的,在乙個團隊內部自行設定統一的錯誤處理模式。你可以考慮下面三種 1 錯誤發生即處理 也就是錯誤出現在 就在那裡及時處理,而不進行 或者其他操作。2 集中錯誤處理 錯誤發生後統一 到某乙...

錯誤處理機制

2020 11 05 16 55 14 三個屬性 name 錯誤名字 message 錯誤資訊提示 stack 錯誤堆疊 使用 名字 屬性 a.message 下面 syntaxerror物件 語法錯誤 referenceerror物件 引用了不存在變數 rangeerror物件 值超出有效範圍 t...

Spring Boot錯誤處理機制

摘要 1 springboot預設的錯誤處理機制 預設效果 1 瀏覽器,返回乙個預設的錯誤頁面 瀏覽器傳送請求的請求頭 2 如果是其他客戶端,預設響應乙個json資料 原理 可以參照errormvcautoconfiguration 錯誤處理的自動配置 給容器中.預設效果 1 瀏覽器,返回乙個預設的...