Nếu bạn đặt này trong một hành động điều khiển:Tại sao Grails loại trừ các trường hợp ngoại lệ của tôi?
def inner = new RuntimeException("inner")
def middle = new Exception("middle", inner)
def outer = new IllegalArgumentException("outer", middle)
throw outer
trang lỗi debug Grails' (và quan trọng nhất, các bản ghi) sẽ chỉ hiển thị các lớp ngoại lệ bên trong và sứ điệp của nó:
Lỗi 500 : Internal server Error
URI:/...
class: java.lang.RuntimeException
nhắn: nội
Đây là vấn đề, bởi vì khi bạn chọn để quấn một ngoại lệ với một thông điệp mô tả nhiều hơn, hầu hết các lần đó là thông điệp bên ngoài đó là quan trọng hơn trong gỡ lỗi vấn đề này.
Thực ra, sẽ hữu ích nếu có tất cả ngoại lệ trong chuỗi nguyên nhân, với tên lớp, thông báo và theo dõi ngăn xếp của chúng, giống như Java thông thường.
Tôi đã tự in bản thân ngoại lệ trong trang lỗi, nhưng việc xóa bỏ xảy ra trước khi chế độ xem lỗi được gọi.
Có thông số cấu hình nào đó có thể thay đổi hành vi này không?
Chỉnh sửa: Tôi đã posted a bug và started a mailing list thread, nhưng cho đến nay tôi chưa tìm được cách giải quyết, thậm chí không phải là nơi trong mã nguồn Grails, nơi việc loại bỏ này xảy ra.
Không. Nó làm cho stacktrace lâu hơn nhiều, nhưng thông điệp trên vẫn là "bên trong" thay vì "bên ngoài". – Tobia