我正在处理我的Datasnap REST服务(Delphi XE3,但也尝试了Delphi 10 Seattle)中的异常处理问题。我在过去写过半打Windows服务,并且始终包括TApplicationEvents组件,以便我可以将任何应用程序异常记录到Windows事件日志中。
然而,这种行为在Datasnap服务中并不发生。 TApplicationEvents.OnException事件从未被触发,因此我认为有其他东西会吃掉这个异常并在它到达之前处理它。
异常显示在Web服务方法的结果中,这很好,因为这意味着我至少可以在客户端上显示一些东西,但我还想在那之前捕获它,以便我能够在服务器端处理不同的异常。
迄今为止我唯一一致的方法是在每个单独的方法中包装一个try..except块,并在每个方法中处理异常,然后重新引发异常。 但是,随着一个具有20个及以上方法的Web服务的增长,这种方式不会真正扩展。
我还尝试实现一些Datasnap组件(TDSServer,TDSHTTPService,TDSTCPServerTransport等)的OnError,OnTrace和其他事件,但这些似乎也从未被触发过。
请问是否有人遇到过类似的情况?
然而,这种行为在Datasnap服务中并不发生。 TApplicationEvents.OnException事件从未被触发,因此我认为有其他东西会吃掉这个异常并在它到达之前处理它。
异常显示在Web服务方法的结果中,这很好,因为这意味着我至少可以在客户端上显示一些东西,但我还想在那之前捕获它,以便我能够在服务器端处理不同的异常。
迄今为止我唯一一致的方法是在每个单独的方法中包装一个try..except块,并在每个方法中处理异常,然后重新引发异常。 但是,随着一个具有20个及以上方法的Web服务的增长,这种方式不会真正扩展。
我还尝试实现一些Datasnap组件(TDSServer,TDSHTTPService,TDSTCPServerTransport等)的OnError,OnTrace和其他事件,但这些似乎也从未被触发过。
请问是否有人遇到过类似的情况?