Go에서의 오류 처리
Go에서의 오류 처리는 프로그래밍의 중요한 측면입니다. 언어는 직접적인 오류 확인 및 처리를 권장하며, 이로 인해 장황한 코드 처리 오류가 반복적으로 발생할 수 있습니다.
"Hello world!"를 파이프하는 다음과 같은 인위적인 예를 생각해 보세요. cat에 넣고 출력을 읽습니다.
package main import "fmt" import "io" import "io/ioutil" import "os/exec" func main() { cmd := exec.Command("cat", "-") stdin, err := cmd.StdinPipe() if err != nil { return } stdout, err := cmd.StdoutPipe() if err != nil { return } err = cmd.Start() if err != nil { return } _, err = io.WriteString(stdin, "Hello world!") if err != nil { return } err = stdin.Close(); if err != nil { return } output, err := ioutil.ReadAll(stdout) if err != nil { return } fmt.Println(string(output)) return }
이 예에는 각 작업에 대해 여러 줄의 오류 처리 코드가 있습니다.
Go의 관용적 접근 방식은 중앙 집중식으로 오류를 처리하는 것입니다. 예를 들어 내부적으로 오류를 관리하는 사용자 정의 함수에 파이프 작업을 캡슐화할 수 있습니다.
package main import ( "fmt" "io" "io/ioutil" "os" "os/exec" ) func piping(input string) (string, error) { cmd := exec.Command("cat", "-") stdin, err := cmd.StdinPipe() if err != nil { return "", err } stdout, err := cmd.StdoutPipe() if err != nil { return "", err } err = cmd.Start() if err != nil { return "", err } _, err = io.WriteString(stdin, input) if err != nil { return "", err } err = stdin.Close() if err != nil { return "", err } all, err := ioutil.ReadAll(stdout) output := string(all) if err != nil { return output, err } return output, nil } func main() { in := "Hello world!" fmt.Println(in) out, err := piping(in) if err != nil { fmt.Println(err) os.Exit(1) } fmt.Println(out) }
이 접근 방식은 기본 함수의 오류 처리 코드 양을 줄여 더 간결하고 읽기 쉽게 만듭니다. .
위 내용은 가독성과 간결성을 위해 Go의 오류 처리를 어떻게 개선할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!