Tôi đang trong quá trình tái cấu trúc một ứng dụng web khá lớn. Một trong những vấn đề chính là xử lý lỗi không nhất quán và tôi đang cố gắng đưa ra một chiến lược hợp lý. Tôi đã tạo một trình xử lý lỗi tùy chỉnh, thông qua set_error_handler về cơ bản biến các lỗi PHP trong ErrorExceptions và một lớp ngoại lệ cơ sở tùy chỉnh, trực tiếp kế thừa từ Ngoại lệ .
Khi sản xuất, tôi đang sử dụng một ngoại lệ chung bắt tất cả, thông qua set_exception_handler và tôi sắp thêm ghi nhật ký ngoại lệ * vào hỗn hợp. Vấn đề nan giải của tôi là nơi thực hiện ghi nhật ký thực tế, trong lớp ngoại lệ cơ sở hoặc trong tất cả.
Tôi đã nghĩ ra một vài lý do để đăng nhập nó trong tất cả:
- Có khá nhiều trường hợp ngoại lệ trong mã cần được chuyển đổi thành một số phần tử con thích hợp của lớp ngoại lệ cơ sở. Cho đến khi điều đó xảy ra, không phải tất cả các ngoại lệ sẽ được đăng nhập.
- Bằng cách nào đó cảm thấy tự nhiên hơn để làm điều đó trong tất cả, một lớp ngoại lệ cơ sở không nên làm nhiều hơn là chỉ như vậy. (Nó có thể là một nguyên tắc trách nhiệm duy nhất, nhưng nó chỉ có thể là một cảm giác sai lầm)
và một lý do để đăng nhập vào lớp ngoại lệ cơ sở:
- Hiện tại, tất cả chỉ được sử dụng trong sản xuất. Có thể dễ dàng giới thiệu nó trên các môi trường khác của chúng tôi (phát triển, thử nghiệm) nhưng điều đó sẽ yêu cầu một vài điều chỉnh, vì các lỗi được xử lý khác nhau trên mỗi môi trường, như trên sản xuất, chúng được dịch sang các trang lỗi 404/503.
Có bất kỳ thực hành chấp nhận được cho nơi đăng nhập ngoại lệ?
* Ghi nhật ký sẽ liên quan đến việc ghi vào tệp văn bản lúc đầu và có thể phát triển thành gửi thư cho một số loại ngoại lệ nhất định.
Một số làm rõ, được nhắc nhở bởi câu trả lời của @ unsolysampler's :
Tôi đang đối mặt với một cơ sở mã hóa 2 * 10 ^ 6, với rất nhiều nội dung của bên thứ ba mà tôi không kiểm soát được và một số mã tôi có quyền kiểm soát các ngoại lệ trước ngày trong PHP. Và cũng có một số mã gần đây tào lao, chúng tôi đang phục hồi sau một thời gian dài áp lực mạnh mẽ, nơi chúng tôi hầu như phải ngừng suy nghĩ và chỉ bị hack.
Chúng tôi đang tích cực tái cấu trúc để giải quyết tất cả các mâu thuẫn và đưa ra cách tiếp cận xử lý lỗi hợp lý, nhưng điều đó sẽ mất một thời gian. Tôi quan tâm nhiều hơn đến những việc cần làm cho đến khi tôi đạt đến điểm xử lý lỗi một cách thích hợp. Có thể tôi sẽ hỏi một câu hỏi khác về một chiến lược ngoại lệ hợp lý tại một số điểm.
Động lực chính của việc đăng nhập là nhận email trên điện thoại của tôi mỗi khi có điều gì đó không hay xảy ra trong quá trình sản xuất. Tôi không quan tâm nếu các bãi chứa dữ liệu trở nên to lớn, nếu chúng làm tôi sẽ có một công việc định kỳ xóa những cái cũ mọi lúc.