go中的try-catch-finally用于异常处理,语法为:try:包含需要处理异常的代码,如出现异常立即转入catch或finally。catch:处理try中抛出的异常,如无异常不会执行。finally:无论是否异常都会执行,常用于清理资源。
Golang 异常处理中的 try-catch-finally
在 Go 语言中,try-catch-finally
语句用于处理异常情况。以下是其语法:
func try() {
defer recover() // 可选,用于捕获恐慌异常
... // 你的需要处理异常的代码
}
try
try
块包含需要处理异常的代码。如果出现异常,try
块中的语句将立即停止执行,并且执行流将转到 catch
块或 finally
块。
catch
catch
块用于处理 try
块中抛出的异常。如果 try
块中的代码没有抛出异常,则不会执行 catch
块。
catch
块的语法为:
func catch() {
r := recover() // 捕获 `try` 块中的恐慌异常
... // 处理异常的代码
}
finally
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的详细内容,更多请关注编程网其它相关文章!