首页 > 解决方案 > C# 如何在捕获后恢复执行我的代码?

问题描述

即使我抛出异常,是否可以在第一次捕获后恢复我的 Programm 的执行?

我做了一个示例程序,但是我将异常添加到我的行List<string> 必须在内部和外部 foreach 之后完全执行,我知道如果我不抛出异常是可能的,但我也必须这样做。

foreach(var x in x)
{
    try
    {
        List<string> exs = new List<string>();
        foreach(var a in b)
        {
            try
            {
                //...some code
            }
            catch(Exception ex)
            {
                throw ex;
            }
            finally
            {
                //...some code
            }
        }
        exs.Add(ex);
    }
    catch(Exception ex)
    {
        Console.WriteLine(ex);
    }
    finally
    {
        //...some code
    }
}

标签: c#exceptiontry-catchexecutethrow

解决方案


不要扔掉它们,而是稍后收集并打印它们。

List<Exception> exs = new List<Exception>();
try
{

    foreach(var a in b)
    {
        try
        {
            //...some code
        }
        catch(Exception ex)
        {
            exs.Add(ex);
        }
        finally
        {
            //...some code
        }
    }        
}    
catch(Exception e)
{
   Console.WriteLine(e.ToString());
}
finally
{
    //...some code
}
exs.ForEach(ex=> Console.WriteLine(ex.ToString()));

推荐阅读