Tôi muốn ném ngoại lệ nhưng với thông báo tùy chỉnh và ngăn xếp stacktrace quá. Tôi đã trải qua nhiều chủ đề khác nhau.Ném ngoại lệ nhưng dấu vết ngăn xếp vẫn tồn tại
catch (Exception ex)
{
throw; // Message is read only but stacktrace persist
throw ex; // Message is readonly and strack trace also blows .. worst!
throw new CustomException("My exception");// Message can be overridden but stacktrace lost
throw new CustomException("My message",ex);// same as above. However if this constructor in exception class calls same constructor of base class then .. see below
}
Khi appraoch cuối cùng được sử dụng (với nhà xây dựng tùy chỉnh ngoại lệ gọi cơ sở constructor lớp), đầu ra trên màn hình của cái chết là một cái gì đó như:
**The remote server returned an error: (401) Unauthorized.**
[WebException: The remote server returned an error: (401) Unauthorized.]
original stack trace
[NewException: newMessage]
New Stack Trace
Điều tốt là mọi thứ đều có trên màn hình. Nhưng, trên cùng, tôi muốn ngoại lệ của mình hiển thị tức là "tin nhắn mới" và không phải là tin nhắn gốc.
Do đó đối chiếu câu hỏi của tôi: LÀM THẾ NÀO tôi có thể hiển thị trên màn hình chết theo dõi ngăn xếp ban đầu nhưng có thông báo lỗi tùy chỉnh?
Đây có phải là một dịch vụ web trả lại ngoại lệ? – Oded
Trong ví dụ của tôi, nó thực sự là một cuộc gọi webservice. Tuy nhiên nó không quan trọng như ngoại lệ có thể có được bất cứ điều gì như DivisionByZero hoặc sqlException vv Ý tưởng là để cho người dùng biết về bản gốc stack theo dõi nhưng nhà phát triển cũng tùy chỉnh thông điệp ngoại lệ mặc định để giúp đỡ nhiều hơn. – helloworld
Không, nó không phải là phi vật chất. Các khung công tác Webservice có những ý tưởng riêng của họ về các ngoại lệ. –