c# - C#发生异常后如何继续

标签 c# asp.net

    static string SomeMethodThatMightThrow(string s)
    {
        if (s[4] == 'C')
            throw new InvalidOperationException();
        return @"C:\newFolder\" + s;

    }
    static void Main(string[] args)
    {
       string[] files = { "fileA.txt", "B.txC", "fileC.txt","fileD.txt" };

    var exceptionDemoQuery =
        from file in files
        let n = SomeMethodThatMightThrow(file)
        select n;
    try
    {
        foreach (var item in exceptionDemoQuery)
        {
            Console.WriteLine("Processing {0}", item);
        }
    }

    catch (InvalidOperationException e)
    {
        Console.WriteLine(e.Message);

    }

    Console.WriteLine("Press any key to exit");
    Console.ReadKey();

}

输出是

正在处理 C:\newFolder\fileA.txt

由于对象的当前状态,操作无效。

但我需要输出为:

正在处理 C:\newFolder\fileA.txt

由于对象的当前状态,操作无效。

由于对象的当前状态,操作无效。

正在处理 C:\newFolder\fileD.txt

请帮忙......

最佳答案

执行 SomeMethodThatMightThrow 包装在 foreach 中的 try/catch 中。

例子:

var exceptionDemoQuery =
    from file in files
    select file;

foreach (var item in exceptionDemoQuery)
{
  try
  {
    Console.WriteLine("Processing {0}", item);
    var n = SomeMethodThatMightThrow(item);
  }
  catch (Exception ex)
  {
    Console.WriteLine(e.Message);
  }
}

关于c# - C#发生异常后如何继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4665707/

相关文章:

c# - 如何在登录时获取用户名并将其存储到数据库

asp.net - 即使注销后,我也可以使用“返回”按钮返回主页!

c# - ASP.NET Core 事件日志提供程序

c# - 如何在 UWP/UAP 上实现模板

c# - 如何使用 LINQ 从 Asp.Net 配置文件属性中查询

c# - 为什么我们应该使用临时对象来引发事件?

c# - 如何创建从具有不同类型的同一通用类继承的对象列表?

c# - 使用 C# 创建 MS Access 数据库时命名空间是什么

c# - .NET : Changing from Windows Authentication to Forms Authentication against AD

c# - 在一个 CMS/多个网站系统中管理数据库的最佳方法是什么