2017-04-03 129 views
-4

我試圖瞭解golang中的錯誤處理以瞭解錯誤處理的工作原理。我有以下代碼:golang錯誤處理類型不匹配

var a int8 
var b int32  
var err error 
c := a + b //types mismatched error 
if err != nil { 
    fmt.Println(err) 
} 

,當我嘗試從VIM內的:GoRun運行此我得到的類型不匹配的錯誤。

我的問題是如何捕獲該錯誤並將消息發送到屏幕,如果這甚至可能是因爲在編譯期間發生錯誤?

+3

這是一個編譯時錯誤,沒有什麼可以「捕捉」和打印,因爲你永遠不會運行它。 – Verran

+0

謝謝弗蘭我以爲是。 – user2804894

回答

1

試圖在Go中添加兩個不同類型是編譯時錯誤。該程序將永遠不會編譯,因此永遠不會運行,所以沒有什麼可以捕捉的 - 除了編寫程序時。

從函數返回時只能檢查err。你在這裏沒有功能,所以你的err從來沒有設置(除了你的代碼不會編譯的事實)。

這與JavaScript或Perl等語言不同,它們沒有嚴格的類型檢查,所以您在運行時遇到類似這樣的錯誤。