2008-10-13 31 views
10

Từ một jsp được ném một NullPointerException ví dụ sử dụng <% null.toString(); %>Làm thế nào để cấu hình Spring HandlerExceptionResolver để xử lý NullPointerException được ném vào jsp?

ngoại lệ này không được xử lý bởi các HandlerExceptionResolver, nhưng ném vào thùng chứa web (tomcat) và chuyển đổi thành một code 500 error.

Làm cách nào để định cấu hình mùa xuân để nhận lỗi đó trong HandlerExceptionResolver của tôi?

chi tiết:

  • mùa xuân có thể được cấu hình để xử lý ngoại lệ ném ra bên trong kiểm soát, nhưng không phải trường hợp ngoại lệ ném bởi xem.
  • Tất nhiên tôi có thể giải quyết NullPointerException, nhưng tôi muốn thiết kế một giải pháp sẽ giải quyết một cách duyên dáng mọi vấn đề có thể xảy ra trên ứng dụng web để hiển thị thông điệp thân thiện với người dùng cho người dùng.

Trả lời

1

Tôi chưa từng làm việc với chút đặc biệt của khuôn khổ mùa xuân, nhưng các tài liệu nói

"Giao diện được thực hiện bởi các đối tượng hơn có thể giải quyết trường hợp ngoại lệ ném trong bản đồ handler hoặc thực hiện, trong trường hợp điển hình để Các trình triển khai thường được đăng ký dưới dạng các bean trong ngữ cảnh ứng dụng

Các khung nhìn lỗi tương tự như trang lỗi JSP, nhưng có thể được sử dụng với bất kỳ loại ngoại lệ nào. xử lý. "

vì vậy tôi hình dung rằng NullPointer mở rộng RuntimeException, khung công tác không được thiết kế để bắt nó. Có một lý do ngoại lệ (s) không thể được xử lý trực tiếp trong bộ điều khiển?

+1

@Steve_B Vấn đề ở đây là lỗi xảy ra trong quá trình xử lý chế độ xem - bộ điều khiển đã được thoát khỏi. – MetroidFan2002

6

Thay vào đó, hãy xem giao diện HandlerInterceptor. Bạn sẽ muốn phương thức afterCompletion. Sau đó, bạn có thể chặn phản hồi và sau đó đặt thông tin tiêu đề thích hợp để chuyển hướng đến trang web lỗi được định cấu hình vùng chứa. Bạn nói đúng rằng Spring không có chức năng này, điều này sẽ phải được chỉ định bởi tệp web.xml xác định mã nào sẽ ánh xạ tới các trang nào.

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