Error handling in Go is implemented through the error type, which provides the Error() method to return error information. There are two methods of error handling: Explicit checking: Use if statements to check for errors and handle them. Error propagation: Errors are passed to the calling function, which decides how to handle it.
Error handling in Go functions
In Go, errors are usually represented by the special error type. This type implements the error
interface and provides the Error()
method to return error information.
Error handling methods
There are two main ways to handle errors in Go:
if
statements to check for errors and handle them as necessary. Explicit Checking
Here's how to explicitly check for errors:
func checkError(err error) { if err != nil { // 处理错误 } }
Error Propagation
To propagate an error, simply return it to the calling function. The caller function can handle or propagate errors further as needed:
func openFile(filename string) (file *os.File, err error) { file, err = os.Open(filename) return } func main() { f, err := openFile("test.txt") if err != nil { fmt.Println(err) } else { // 使用 file } }
Best Practices
Practical case
Consider a function that reads and writes files:
func readFile(filename string) (content []byte, err error) { data, err := os.ReadFile(filename) if err != nil { return nil, fmt.Errorf("无法读取文件: %w", err) } return data, nil }
This function uses fmt.Errorf
Create a new error with the original error as the underlying cause. This allows us to add additional information while maintaining the original error context.
The above is the detailed content of Error handling of golang function. For more information, please follow other related articles on the PHP Chinese website!