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中文網其他相關文章!