[go] 비동기 에러 처리
비동기 프로그래밍은 오류를 다루기 어려울 수 있습니다. 그러나 간단한 패턴을 따르면 비동기 코드에서 발생하는 오류를 처리하는 것이 쉬워집니다. Go 언어의 경우, 아래와 같은 패턴을 사용하여 비동기 에러를 처리할 수 있습니다.
error
타입 활용
Go 언어에서는 error
타입을 사용하여 함수에서 발생하는 오류를 반환합니다. 비동기 함수 내에서 오류가 발생하는 경우, 해당 오류를 error
타입으로 반환할 수 있습니다. 예를 들어, 파일을 읽는 비동기 함수는 다음과 같이 작성될 수 있습니다.
import (
"io/ioutil"
)
func readFile(filename string) ([]byte, error) {
data, err := ioutil.ReadFile(filename)
if err != nil {
return nil, err
}
return data, nil
}
오류 처리
비동기 함수를 호출할 때는 항상 반환된 오류를 확인하는 것이 중요합니다. 아래는 오류를 처리하는 예제 코드입니다.
func main() {
data, err := readFile("example.txt")
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(data))
}
goroutine
내의 오류 처리
goroutine
내에서 발생하는 오류를 처리하는 것도 중요합니다. 아래의 예제는 goroutine
을 사용하여 비동기 작업을 수행하고, 해당 작업에서 발생하는 오류를 처리하는 방법을 보여줍니다.
func main() {
result := make(chan int)
errCh := make(chan error)
go func() {
// 비동기 작업 수행
err := doSomeWork()
if err != nil {
errCh <- err
return
}
result <- 1
}()
select {
case res := <-result:
fmt.Println("Result:", res)
case err := <-errCh:
fmt.Println("Error:", err)
}
}
결론
비동기 코드에서의 오류 처리는 중요한 부분이며, Go 언어에서는 error
타입을 활용하여 비동기 함수에서 발생하는 오류를 쉽게 처리할 수 있습니다. 항상 비동기 함수를 호출할 때는 반환된 오류를 확인하는 것을 잊지 말아야 합니다.