2009-12-24 30 views
5

Khi tôi đang lập trình trong Erlang, tôi có nên xác thực tất cả các giá trị trả về từ các cuộc gọi hàm để thành công thông qua kết hợp mẫu ngay cả khi tôi không định sử dụng giá trị trả về? Hầu hết các API Erlang tôi đã thấy cho đến nay không ném ngoại lệ về lỗi (nhưng trả về một cái gì đó như {error, Error}) vì vậy tôi phải xác thực giá trị trả về có? Bất kỳ ngoại lệ nào đối với điều này, nơi tôi không thực sự cần phải lo lắng về nó?Tôi có nên là mẫu phù hợp với mọi giá trị trả lại không?

Trả lời

11

Đó là kiểu lập trình tốt để khắc phục càng sớm càng tốt khi có sự cố. Bất cứ điều gì bạn thực hiện sau đó sẽ được thực hiện với hệ thống ở trạng thái không xác định.

Trừ khi bạn có ý định xử lý giá trị lỗi và làm điều gì đó trên đó, bạn viết mã của bạn cho trường hợp thành công. Như trong vòng lặp ít buồn sau:

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

Christian nói tất cả ... + 1. – jldupont

+0

Vâng, đây là những gì tôi đã tìm. Vấn đề là một trong các API của bên thứ ba mà tôi đang sử dụng không trả về ok một cách tốt đẹp khi thành công. Sau khi lưu một tài liệu, nó sẽ trả về tài liệu đã lưu. Tôi lấy lại SomeComplexDoc thay vì {ok, SomeComplexDoc}. –

+3

@ Jeremy, Bạn chỉ có thể lưu tài liệu và sau đó khớp với tài liệu đó ở dòng tiếp theo. 'Doc = my_api_call()', 'ok = is_valid_doc (Tài liệu)'. – Zed

Các vấn đề liên quan