Tôi đang cố gắng để hiểu làm thế nào tôi nên thiết kế các lỗi xử lý các phần của mã của tôi. Gần đây tôi đã hỏi một câu hỏi tương tự về cách tôi nên đi về returning server error codes to the user, eg. 404 errors. Tôi đã học được rằng tôi nên xử lý lỗi từ bên trong phần hiện tại của ứng dụng; dường như đủ đơn giản.Tôi nên xử lý các lỗi dự kiến như thế nào? ví dụ. "tên người dùng đã tồn tại"
Tuy nhiên, tôi nên làm gì khi không thể xử lý lỗi từ liên kết hiện tại trong chuỗi? Ví dụ, tôi có thể có một lớp được sử dụng để quản lý xác thực. Một trong những phương pháp của nó có thể là createUser($username, $password)
. Chỉnh sửa: Phương thức này sẽ trả lại id người dùng hoặc đối tượng người dùng. Trong hàm đó, tôi cần phải xác định xem tên người dùng đã tồn tại chưa. Nếu điều này là đúng, làm thế nào tôi nên cảnh báo mã gọi điện thoại về điều này? Trả về null thay vì một đối tượng người dùng là một cách. Nhưng làm cách nào để tôi biết được nguyên nhân gây ra lỗi?
Tôi nên xử lý lỗi như thế nào để mã gọi điện có thể dễ dàng tìm ra nguyên nhân gây ra lỗi? Có một mẫu thiết kế thường được sử dụng cho loại tình huống này không?
Chỉnh sửa: Tôi quên đề cập: Tôi đang sử dụng PHP.
quyết: Trong khi nhiều người cho rằng trường hợp ngoại lệ không nên được sử dụng trong tình huống này, tôi đã đi đến kết luận rằng đó là giải pháp tốt nhất.
Thứ nhất, không có thay thế đơn giản, thanh lịch nào cho ngoại lệ. (Tôi cho rằng điều đó là không thể nếu không có một hệ thống được xây dựng thành ngôn ngữ ... ngoại lệ đã được tích hợp sẵn.)
Thứ hai, để đáp ứng "ngoại lệ chỉ nên được sử dụng cho các tình huống đặc biệt, và đây không phải là một "Lập luận: "When I call getFoo(), I actually expect to get a Foo. If I don't get it, it's by definition an exceptional event." (thông qua, pkainulainen)
Bạn có thể mở rộng ý nghĩa của việc 'đặt đối tượng lỗi' không? Cảm ơn! –
Trong số ba trường hợp này, ngoại lệ dường như được thiết kế riêng để xử lý các loại kịch bản được mô tả trong câu hỏi. Bạn có thể chọn và chọn cách xử lý từng sự kiện đặc biệt dựa trên lớp và thông báo của ngoại lệ. – AndreiM
@tehblanx - Tôi nghĩ rằng tôi không đồng ý. 'CreateUser' sẽ trả về' true' thành công và 'false' nếu ngược lại. Lý tưởng nhất là tất cả điều này sẽ được xử lý trong một lớp và chính lớp đó có thể xử lý các vấn đề phát sinh từ một đăng ký không thành công. – thetaiko