package main
import (
"errors"
"fmt"
"io/ioutil"
)
type error interface{
Error() string
}
/*
golang中錯誤處理,在golang中錯誤是一種類型,默認如果沒有發生錯誤,返回的錯誤值講為nil
if err !=nil{
something went wrong
}
golang 的錯誤類型error 可以像其他一樣在函數之間傳遞錯誤
panic 讓golang程序馬上停止執行,慎用。除非極端情況程序將帶來很多問題或者發生了無法處理的錯誤
if err!=nil{
panic(err)
}
golang 語言不支持 try --catch--finally控制結構
*/
func main(){
var file []byte
var err error
file,err =ioutil.ReadFile("foo.txt")
if err!=nil{
fmt.Println("111")
fmt.Println(err)
return
}
fmt.Println(string(file)) //文件中讀出來的字符串是一個byte類型的數組 []byte,需要string轉換成文字
err1 :=errors.New("Something went wrong")
if err1 !=nil{
fmt.Println(err1)
}
panic("oh no ican do no more.Goodby") //panic可以導致程序立即停止執行,慎用
name,role:="Richard Jupp","Drummer"
err2:=fmt.Errorf("The %v ,%vquit",role,name)
if err2!=nil{
fmt.Println(err2)
}
}
func Half(numberToHalf int)(int,error){
if numberToHalf%2 !=0 {
return -1, fmt.Errorf("Cannot half %v", numberToHalf)
}
return numberToHalf/2,nil
}