赶上是不好的做法Throwable?
例如这样的事情:
try {
// Some code
} catch(Throwable e) {
// handle the exception
}
Run Code Online (Sandbox Code Playgroud)
这是一种不好的做法还是我们应该尽可能具体?
我正在努力处理我的Datasnap REST服务中的异常处理(Delphi XE3,但也尝试使用Delphi 10 Seattle).多年来我写了六个Windows服务,我总是包含一个TApplicationEvents组件,以便我可以将任何应用程序异常记录到Windows事件日志中.
但是,Datasnap服务不会发生此行为.TApplicationEvents.OnException事件永远不会被触发,所以我假设其他东西正在吃异常并在它到达之前处理它.
Web服务方法的结果中显示异常,这很好,因为这意味着我至少可以在客户端显示某些内容,但我还想在此之前捕获它,以便我可以处理不同的异常服务器-侧.
到目前为止,我唯一一致的方法是将每个单独的方法包装在一个try..except块中,并在重新引发异常之前处理每个方法中的异常.但是,随着20种方法的Web服务不断增长,这种情况并没有真正扩大.
我也尝试过实现一些Datasnap组件的OnError,OnTrace和其他事件(TDSServer,TDSHTTPService,TDSTCPServerTransport等),但这些事件似乎也从未被解雇过.
有没有人遇到这样的事,拜托?