выбросить исключение из вызова метода в текстовое поле - PullRequest
0 голосов
/ 22 декабря 2011

Я пытаюсь, чтобы моя страница вызывала метод, и в случае сбоя отображала ошибку в моем элементе управления mbResult.Тем не менее, поскольку мой метод является пустым методом, мне трудно создать исключение.Если я брошу его из конца метода, он не будет отображаться в моем окне с ошибкой.

У меня есть следующий код на моей странице:

try
{
    Facade.AcceptChanges();
} 
catch(FarAlreadyExistsException) 
{
    mbResult.Message = new MessageInfo(FutureActivitiesAlreadyExistsMessage);
    return;
}

метод принятия изменений:*

public void AcceptChanges() 
{
    try
    {
        DataContext.SaveChanges();
    }
    catch (Exception) 
    {
        return;
    }
}

Ответы [ 6 ]

3 голосов
/ 22 декабря 2011
public void AcceptChanges() {
            try
            {
                DataContext.SaveChanges();
            }
            catch (Exception cause) {
                throw new FarAlreadyExistsException(cause);
            }
        }

Вы не выбрасываете исключение, поэтому вы не собираетесь перехватывать его при попытке первого класса

3 голосов
/ 22 декабря 2011

Удалите вторую попытку, чтобы исключение попало в ваш первый блок:следующее изменение:

try
{
    Facade.AcceptChanges();
} 
catch(Exception) // according to the documentation, this should be an OptimisticConcurrencyException
{
    mbResult.Message = new MessageInfo(FutureActivitiesAlreadyExistsMessage);
    return;
}
2 голосов
/ 22 декабря 2011

Вы не должны обрабатывать исключение в AcceptChanges, если не собираетесь ничего делать.Это просто проглатывает ошибку, поэтому ваш внешний блок try...catch не увидит ее (и код в блоке catch не сработает.

Удалите try...catch из вашего AcceptChangesзатем метод catch в методе, который вызывает его, будет перехватывать исключение (если оно имеет правильный тип.

1 голос
/ 22 декабря 2011

Вы не должны перехватывать исключение в AcceptChanges(), и пусть первый блок try-catch обрабатывает его.

1 голос
/ 22 декабря 2011

Вы глотаете исключение в AcceptChanges. Удалите Try;Catch; в AcceptChanges и дайте ему всплыть.

1 голос
/ 22 декабря 2011

В методе AcceptChanges() нет общего оператора try-catch. Позвольте Exception, который происходит внутри DataContext.SaveChanges(), всплыть до вашего try-catch внутри первого раздела кода.

Вы должны обрабатывать только те исключения, которые ожидаете (если вы действительно не заботитесь о том, что часть кода не работает). И вы должны обрабатывать исключения только в тех точках, где их беспокоит.

...