Go에서 함수 오류를 처리하는 일반적인 패턴은 다음과 같습니다. 오류 반환: 함수는 성공 시 nil, 실패 시 오류 유형인 오류 값을 반환합니다. 전역 변수: 함수가 오류 값에 쉽게 접근하여 사용할 수 있도록 전역 변수를 사용하여 오류 값을 저장합니다. 패닉: 오류가 너무 심각해서 함수를 계속 실행할 수 없을 때 사용됩니다. 함수가 즉시 종료되고 오류가 호출자에게 전파됩니다. 지연: defer 문을 사용하여 함수가 반환되기 전에 코드를 실행합니다. 이는 함수가 끝날 때까지 정리 작업이나 오류 처리를 지연하는 데 적합합니다.
Go의 함수 오류 처리는 강력하고 안정적인 애플리케이션을 구축하는 데 매우 중요합니다. 오류 처리에는 몇 가지 일반적인 패턴이 있으며 각 패턴에는 고유한 장점과 단점이 있습니다.
가장 간단한 방법은 함수가 오류 값을 반환하도록 하는 것입니다. 작업이 성공하면 함수는 nil을 반환하고, 그렇지 않으면 error
또는 사용자 정의 오류 유형과 같은 오류를 나타내는 유형을 반환합니다.
func divide(x, y int) (int, error) { if y == 0 { return 0, fmt.Errorf("cannot divide by zero") } return x / y, nil }
이 방법은 전역 변수를 사용하여 오류 값을 저장합니다. 이것의 이점은 함수가 다른 함수에 의해 호출되더라도 오류 값에 쉽게 액세스하고 사용할 수 있다는 것입니다.
var err error func init() { // 初始化 err 变量 } func calculate() { // ... err = fmt.Errorf("an error occurred") } func handleError() { if err != nil { // 处理错误 } }
경우에 따라서는 오류가 너무 심각하여 함수를 계속 실행할 수 없을 때 사용할 수 있습니다. 패닉은 즉시 함수를 종료하고 해당 오류를 호출자에게 전파합니다.
func someFunction() { // ... if err != nil { panic(err) } }
defer 문은 함수가 반환되기 전에 코드를 실행합니다. 이를 통해 정리 작업이나 오류 처리를 함수가 끝날 때까지 연기할 수 있습니다.
func readFile() (string, error) { defer file.Close() // ... }
import ( "fmt" "io" "os" ) func readFile(path string) ([]byte, error) { file, err := os.Open(path) if err != nil { return nil, fmt.Errorf("open file: %w", err) } // 使用 defer 语句延迟关闭文件,确保在函数返回之前关闭 defer file.Close() // ... 读取文件内容 return data, nil }
위 내용은 golang 함수의 오류 처리 모드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!