此文介绍的并非 使用panic/recover. 因为实际使用中不建议使用panic/recover. 但try catch finally 的编程方式 还是会经常用到的。 代码如下:
package main import ( "fmt" "runtime" "os" ) // Try to open a file named dummy.one // for input. Return the error if it won't open. func dummy1() error { f,err:= os.Open("dummy.one") if(err!=nil) { return err } else { f.Close() return nil } } // Try to open a file named dummy.two // for input. Return the error if it won't open. func dummy2() error { f,err:= os.Open("dummy.two") if(err!=nil) { return err } else { f.Close() return nil } } // If the error value is not nil, // display the caller's filename and // calling line-number. Then, display // the error object. Return true // if the err parameter was true. // Otherwise, return false. func dispErr(err error) bool { if(err!=nil) { _,file,line,_:=runtime.Caller(1) fmt.Fprintf(os.Stderr,"File: %s Line: %d Err: %v ",file,line,err) return true } return false } func main() { var err error // Create an anonymous function and // invoke it. // // Use conditional returns to drop out // of the function block to simulate falling // out of a "try" block. // (func() { fmt.Println("Attempt #1") err=dummy1() if dispErr(err) { return } fmt.Println("Attempt #2") err=dummy2() if dispErr(err) { return } })() if(err!=nil) { // catch block equivalent fmt.Println("In 'catch' block") } // finally block equivalent fmt.Println("Done!") }优质内容筛选与推荐>>
1、BAT级别分类
2、Spring Boot中通过CORS解决跨域问题
3、sharepoint 基本概念 2010.04.16
4、C语言I博客作业06
5、07——为多态基类声明为virtual析构函数