2013-06-26 6 views
11

Tại sao có lỗi và ngoại lệ trong Dart và không phải là lỗi hoặc ngoại lệ?Lỗi so với ngoại lệ trong Dart

Lý do khiến người dùng lịch sử có mùi gì?

Tôi có thể ném Lỗi, tôi có thể ném Ngoại lệ. Không ai trong số họ được kiểm tra bằng các Analyzer như trong Java (Exception vs RuntimeException)

Trả lời

20

Từ this post, trích dẫn Bob Nystrom:

Lỗi và lớp con của nó là lỗi chương trình. Nếu một trong số này xảy ra, mã của bạn không tốt và bạn nên sửa mã của mình.

Các lớp ngoại lệ không phải lỗi dành cho các lỗi thời gian chạy. Đôi khi bạn có thể ngăn không cho họ bị ném, nhưng thường thì bạn không thể.

Ngoại trừ một số trường hợp đặc biệt, Dart phi tiêu sẽ ném Lỗi nhưng không bao giờ bắt được chúng. Chúng tồn tại cụ thể để không bị bắt giữ để chúng gỡ xuống ứng dụng và thông báo cho lập trình viên về vị trí của lỗi .

Nói cách khác, bạn nên mong đợi (và kiểm tra) ngoại lệ (dự định bạn nên xử lý chúng). Nếu bạn gặp lỗi, thì bạn cần kiểm tra cách bạn đang sử dụng API đang ném lỗi - có thể bạn đang sử dụng sai.

Nếu bạn đang viết một API, thì bạn nên sử dụng cùng một mẫu. Lỗi là thông điệp cho các nhà phát triển hạ lưu về cách họ đang sử dụng API của bạn.

+2

Thx Chris để làm rõ! Tôi nghĩ rằng đó là mất tích trong tài liệu. Đã xảy ra sự cố cho vấn đề này: https://code.google.com/p/dart/issues/detail?id=9377 –