エラーハンドリング
Goにおけるエラーハンドリングは、関数の多値返しにて実現する。
関数は処理結果とエラー値を返し、エラー値を確認することにより異常処理の場合を見分ける。
正常処理の場合は、エラー値はnil(Null)である。
異常が起こった場合は、エラー値の中にエラー情報が格納されている。
Code
// 割り算を行う関数
func calcDiv(molec int, denomi int) (result int, err error) {
result = molec / denomi
return result, err
}
func main() {
// 正常に計算される割り算
result1, err := calcDiv(128, 4)
if err != nil { // 正常処理の場合は、errに値が格納されない
log.Fatal(err)
}
fmt.Printf("Answer : %d \n", result1)
// エラーが発生する0による割り算
result2, err := calcDiv(128, 0)
if err != nil { // 異常の場合は、errに値が格納されている
log.Fatal(err)
}
fmt.Printf("Answer : %d \n", result2)
}
Output Sample
~ $ go build main.go
~ $ ./main
Answer : 32
panic: runtime error: integer divide by zero
goroutine 1 [running]:
main.calcDiv(...)
/Users/main.go:10
main.main()
/Users/main.go:26 +0x6b
GitHub