This is a creation in Article, where the information may have evolved or changed.
Basic example:
package main // definition error // error is also an interface import ( errors " " fmt " var errnotfound error = errors. New ( " not found error " " Func main () {FMT. Printf ( error:%v " , Errnotfound)}
Error handling:
Package Mainimport ("FMT" "OS" " Time") Type Patherrorstruct{PathstringopstringCreatetimestringmessagestring}func (P*patherror) Error ()string { returnFmt. Sprintf ("path=%s op=%s createtime=%s message=%s", P.path, P.op, P.createtime, P.message)} Func Open (filenamestring) Error {file, err:=OS. Open (filename)ifErr! =Nil {return&patherror{path:filename, op:"Read", Message:err. Error (), createtime:fmt. Sprintf ("%v", time. Now ()),}} defer file. Close ()returnNil}func Main () {err:= Open ("D:/project/src/go_dev/day7/example10/123.txt") SwitchV: =Err. (type) { Case*patherror:fmt. Println ("Get path error,", V)default: }}
Error Handling
Practice
Package Mainimport"FMT"func Badcall () {Panic ("Bad end")}func Test () {defer func () {ifE: = Recover (); E! =Nil {fmt. Printf ("panicking%s\r\n", E)} } () Badcall () fmt. Printf ("After bad call\r\n")}func Main () {FMT. Printf ("calling test\r\n") test ()}