在WCF中,是否有一个可以捕获未处理异常的事件或方法,还是我需要在任何方法中放置try/catch?
IErrorHandler
接口的类:您应该使用内部和外部的TRY/Catch块。
因此,第一个方法以Try开头
然后,如果在另一个方法中抛出任何内容,则默认为在公开方法中的通用catch中返回值给客户端。
我总是在我的catch块中使用日志记录,告诉管理员出了什么问题,但我总是让外部catch返回一个类似于“请原谅我们的应用程序暂时失效。WCF.Blah服务已失败。请查看服务器日志获取完整详细信息”的值。
这样,您就可以处理错误、记录日志并向客户发送良好的消息。
public class Service1 : IService1
{
public string GetData(int value)
{
try
{
return somemethod(value);
}
catch(Exception ex)
{
LoggingHelper.Log(ex);
return "Please Except our Appogies the WCF.Blah service has failed. Please review the server logs for complete details";
}
}