2009-12-24 7 views
5

Cuando estoy programando en Erlang, ¿debo validar todos los valores devueltos de las llamadas a funciones para el éxito mediante la coincidencia de patrones, incluso si no tengo la intención de utilizar el valor de retorno? La mayoría de las API de Erlang que he visto hasta ahora no arrojan excepciones por error (pero devuelven algo como {error, Error}), así que debo validar el valor de retorno ¿sí? ¿Alguna excepción a esto en la que realmente no tengo que preocuparme?¿Debo ser un patrón que coincida con cada valor de retorno?

Respuesta

11

Es un buen programa de programación para colgar lo antes posible cuando algo ha salido mal. Todo lo que ejecutes después se hará con el sistema en un estado desconocido.

A menos que tenga la intención de manejar el valor del error y hacer algo al respecto, escriba su código para el caso exitoso. Como en el siguiente pequeño bucle triste:

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

Christian dijo que todo ... + 1. – jldupont

+0

Sí, esto es lo que pensé. El problema es que una de las API de terceros que estoy usando no funciona correctamente en caso de éxito. Después de guardar un documento, devuelve el documento guardado. Devuelvo SomeComplexDoc en lugar de {ok, SomeComplexDoc}. –

+3

@Jeremy, solo puede guardar el documento y luego coincidir en la siguiente línea. 'Doc = my_api_call()', 'ok = is_valid_doc (Doc)'. – Zed

Cuestiones relacionadas