Go中的try-catch-finally用于异常处理,语法为:try:包含需要处理异常的代码,如出现异常立即转入catch或finally。catch:处理try中抛出的异常,如无异常不会执行。finally:无论是否异常都会执行,常用于清理资源。
在 Go 语言中,try-catch-finally
语句用于处理异常情况。以下是其语法:
func try() { defer recover() // 可选,用于捕获恐慌异常 ... // 你的需要处理异常的代码 }
try
块包含需要处理异常的代码。如果出现异常,try
块中的语句将立即停止执行,并且执行流将转到 catch
块或 finally
块。
catch
块用于处理 try
块中抛出的异常。如果 try
块中的代码没有抛出异常,则不会执行 catch
块。
catch
块的语法为:
func catch() { r := recover() // 捕获 `try` 块中的恐慌异常 ... // 处理异常的代码 }
finally
块无论 try
块是否抛出异常都会执行。它通常用于清理资源或执行其他收尾操作。
finally
块的语法为:
func finally() { ... // 清理资源或执行其他收尾操作 }
以下是一个处理文件读取异常的示例:
import ( "fmt" "io/ioutil" ) func readFile(filename string) { defer recover() contents, err := ioutil.ReadFile(filename) if err != nil { panic(err) } fmt.Println(string(contents)) } func main() { readFile("existing_file.txt") readFile("non_existing_file.txt") }
在这个示例中,try
块包含读取文件 existing_file.txt
的代码。如果文件存在并且可以成功读取,则 try
块将正常执行,并且内容将被打印到控制台。
catch
块用于处理 try
块中可能发生的错误。如果文件不存在或无法读取,try
块将抛出一个异常,并且执行将转到 catch
块。在 catch
块中,异常被捕获,并打印到控制台。
finally
块是可选的,但它可以用于执行清理操作,例如关闭文件句柄。
以上是Golang异常处理中的try-catch-finally的详细内容。更多信息请关注PHP中文网其他相关文章!