recover

recover

    Go: recover() 를 사용하여 복구하기 [Effective Go]

    recover() 함수를 사용하여 panic() 에서 어플리케이션을 복구할 때 사용할 수는 몇 가지 기법을 Effective Go 에서 보여주고 있다. 이 포스트에서 이야기해 볼 것은 두 가지, 다수의 고루틴을 돌릴 때 다른 고루틴에게 피해를 주지 않고 실패한 고루틴만 로깅하기와 패닉, 한 번 더 패닉이다. 패닉과 에러에 대한 기초적인 내용은 다른 포스트에 적은 바 있다. Go: 에러와 패닉 (panic, recover) Go: 에러와 패닉 (panic, recover) 예외가 없다고? 그렇다. Go 언어에는 예외(Exception)가 없다. 에러로 모든 것을 처리한다. error 빌트인 타입은 존재하긴 하지만, 그렇다고 타언어처럼 모든 에러에 대해 타입이 매핑되어 있는 것은 pronist.tistory..

    Go: 에러와 패닉 (panic, recover)

    예외가 없다고? 그렇다. Go 언어에는 예외(Exception)가 없다. 에러로 모든 것을 처리한다. error 빌트인 타입은 존재하긴 하지만, 그렇다고 타언어처럼 모든 에러에 대해 타입이 매핑되어 있는 것은 아니다. 내가 접한 언어 중에는 Syntax, Out of Range 등을 전부 나눠놓은 경우가 있었는데, 그다지 좋은 기분이 들지는 않았다. 아니면 에러와 예외를 둘 다 사용하여 컴파일이나 정적으로 발생하는 것은 에러로, 런타임 중에 발생한 것은 예외로 하여 개별 클래스가 계층에 따라 분리된 경우도 있었는데, 상당히 헷갈리기 그지 없었다. Go 에는 에러와 패닉이 있는데, 패닉은 런타임 중에 발생하는 치명적인 에러를 의미하며 프로그램이 더 이상 진행될 수 없는 수준의 에러다. 상당히 치명적이어서 ..