2009-12-24 4 views
5

Erlang에서 프로그래밍 할 때 반환 값을 사용하지 않더라도 패턴 일치를 통해 성공을 위해 함수 호출에서 모든 반환 값의 유효성을 검사해야합니까? 지금까지 본 대부분의 Erlang API는 오류시 예외를 throw하지 않지만 반환 값의 유효성을 검사해야 할 필요가 있으므로 {error, Error}와 같은 값을 반환합니다. 이것에 대한 어떤 예외도 나는 그것에 대해 정말로 걱정할 필요가 없다.모든 반환 값과 패턴을 일치시켜야합니까?

답변

11

뭔가 잘못되었을 때 가능한 한 빨리 충돌하는 좋은 프로그래밍 스타일입니다. 그 후에 실행하는 것은 알 수없는 상태의 시스템으로 수행됩니다.

오류 값을 처리하고 이에 대한 조치를 취하지 않으려면 성공 사례에 대한 코드를 작성하십시오. 다음과 같은 작은 슬픈 루프에서와 같이 :

life() -> 
    ok = work(), 
    ok = rest(), 
    life(). 
+0

크리스챤은 모두 ... +1. – jldupont

+0

네,이게 제가 생각한 것입니다. 문제는 내가 사용하고있는 써드 파티 API 중 하나가 성공했을 때 제대로 돌아 오지 않는다는 것입니다. 문서를 저장 한 후 저장된 문서 자체를 반환합니다. 나는 {ok, SomeComplexDoc}보다는 SomeComplexDoc을 되 찾는다. –

+3

@Jeremy, 그냥 문서를 저장 한 다음 다음 줄에서 일치시킬 수 있습니다. 'Doc = my_api_call()','ok = is_valid_doc (Doc)'. – Zed

관련 문제