将方法调用中的异常抛出到文本框中

时间:2011-12-22 14:28:32

标签: c# exception error-handling

我试图让我的页面调用一个方法,如果失败,则在我的mbResult控件中显示错误。但是,由于我的方法是一个void方法,我很难抛出异常。如果我从方法结束中抛出它,它将不会显示在我的错误框中。

我的页面中有以下代码:

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

接受更改方法是这个

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

6 个答案:

答案 0 :(得分:3)

删除第二个try-catch,让异常在第一个catch块中被捕获:

public void AcceptChanges() 
{
    DataContext.SaveChanges();
}

编辑:您似乎应用以下更改:

try
{
    Facade.AcceptChanges();
} 
catch(Exception) // according to the documentation, this should be an OptimisticConcurrencyException
{
    mbResult.Message = new MessageInfo(FutureActivitiesAlreadyExistsMessage);
    return;
}

答案 1 :(得分:3)

public void AcceptChanges() {
            try
            {
                DataContext.SaveChanges();
            }
            catch (Exception cause) {
                throw new FarAlreadyExistsException(cause);
            }
        }

你没有抛出异常,所以你不会在第一种方法的try-catch中捕获它

答案 2 :(得分:2)

如果您不打算执行任何操作,则不应在AcceptChanges中处理异常。它只是吞下了错误,因此您的外部try...catch块将无法看到它(并且catch块中的代码不会被触发。

删除try...catch方法中的AcceptChanges,然后调用它的方法中的catch代码将捕获异常(只要它的类型正确。

答案 3 :(得分:1)

try-catch方法中没有通用AcceptChanges()语句。让Exception中出现的DataContext.SaveChanges()在代码的第一部分内冒泡到您的try-catch

您应该只处理您期望的异常(除非您真的不关心一段代码是否失败)。而且你应该只处理关心异常的确切位置的异常。

答案 4 :(得分:1)

您正在AcceptChanges吞下例外。移除Try;Catch;中的AcceptChanges并让它冒泡。

答案 5 :(得分:1)

你不应该在AcceptChanges()中捕获异常然后让try-catch块处理它。