【问题标题】:How to keep running a program if an exception occurs? [duplicate]如果发生异常,如何继续运行程序? [复制]
【发布时间】:2014-10-22 08:14:40
【问题描述】:

我有一个与两台服务器连接的应用程序。如果它无法与服务器连接,则会引发异常。我希望程序继续执行,而是尝试连接到另一台服务器。我该怎么做?

【问题讨论】:

  • try{//...}catch(Exception ex){//...}
  • 为什么所有的反对票?诚然,这个问题是关于C# 工作原理的一个非常基本的问题,但它对绝对的初学者没有价值吗?
  • @beto13 - 推荐阅读 Rob Milles 免费的 C# 黄皮书,了解 C# 的良好介绍,主题包括异常处理:robmiles.com/c-yellow-book
  • @PhilipPittle - 如果您将鼠标悬停在反对票图标上,它会显示“这个问题没有显示出研究成果”(据记录,我没有反对这个问题,但我反对了许多类似的问题)
  • @PhilipPittle - 我不想再向这篇文章发送垃圾邮件了,但是当我在谷歌中输入“C# 如果发生异常时如何继续运行程序?” (以 c# 为前缀的操作的问题标题);排名靠前的结果是一个堆栈溢出问题、一个关于异常处理的教程,然后是 6 个关于处理异常的 msdn 链接

标签: c# exception-handling


【解决方案1】:

使用 try catch 块。

var serversToTry = new []{"Server1", "Server2"};

foreach (var server in serversToTry)
{

    try{
       //connect to server
       return;  //if you made it this far, connection succedded.
    }
    catch (Exception e)
    {
        //log e if you want
    }
}

【讨论】:

    【解决方案2】:

    只需使用转到函数try-catch

    try
    {
       //do something
    }
    catch(SpecificException ex)
    {
    
    }
    catch(LessspecificException ex)
    {
    }
    catch(EvenLessSpecificException ex)
    {
    }
    catch(Exception ex)
    {
      //general exception
    }
    finally
    {
      //execute always!
    }
    

    注意,您可以使用多个catch 语句来捕获不同的异常。首先使用最具体的例外,然后从那里进行概括。 finally 语句是可选的,但如果你实现它,它会被每次调用,无论是否发生异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-30
      • 2014-03-28
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-19
      相关资源
      最近更新 更多