Поймать необработанное исключение в WCF - PullRequest
5 голосов
/ 29 апреля 2010

Есть ли в WCF событие или метод, который перехватывает необработанные исключения, или мне нужно добавить метод try / catch в любой метод?

Ответы [ 2 ]

7 голосов
/ 29 апреля 2010

Да, создайте класс, который реализует интерфейс IErrorHandler:

Позволяет разработчику контролировать сообщение об ошибке, возвращаемое вызывающей стороне, и при необходимости выполнять пользовательскую обработку ошибок, такую ​​как ведение журнала.

0 голосов
/ 29 апреля 2010

Вы должны сделать Внутренний и внешний блоки TRY / Catch.

Таким образом, первый метод начинается с Try

Тогда, если что-то выбрасывается в другом методе, по умолчанию используется ваш общий улов в методе.то есть в открытом методе для возврата значения клиенту.

Я всегда использую ведение журнала в своих блоках catch, чтобы сообщить администратору, что пошло не так, но у меня всегда есть внешний catch, возвращающий значение что-то вроде «ПожалуйстаЗа исключением наших Appogies, служба 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";
        }
    }
...