防止程序崩溃时意外关闭(包括使用TRY-CATCH)

时间:2014-01-16 11:12:45

标签: c# ftp crash windows-applications

我在系统中使用第三方软件进行控制代理。
所以每个网络连接都使用该代理软件 在我的Windows应用程序中,我有一些代码可以通过 FTP 上传我的文件 我在ftp类和主应用程序中有很多try-catch,以防止显示任何错误并停止应用程序 当该代理软件运行并且ftp类正在尝试连接到我的服务器时突然关闭该代理软件我的程序因未知原因而关闭。
我怎样才能使该程序在崩溃时关闭并保持活力? 为什么那些tr-catch不能完成他们的工作?

编辑1:
这些捕获部件从不运行以获得错误 请看这张照片:

IMAGE 1

IMAGE 2

但正常的异常窗口是这样的:

IMAGE 3

编辑2:
我的try / catch如下所示:

class My_FTP
{
    public void upload()
    {
      try
      {
        //Codes

        CRASH IS HERE AND WE NEVER JUMP TO CATCH EREA!!!!!!!!!!!!!!!!!!!!

        while (bytesSent != 0)
       {

       }
      }
      catch (Exception ex)
      {
        Console.WriteLine(ex.ToString());
      }
    }
}


private void Form1_Load(object sender, EventArgs e)
{
  try
  {
    My_FTP my_ftp_ = new My_FTP();
    my_ftp_.upload();
  }
  catch (Exception ex)
  {
    Console.WriteLine(ex.ToString());
  }

  try
  {
    //Other_Codes;
  }
  catch (Exception ex)
  {
    Console.WriteLine(ex.ToString());
  }

}    

我试过这些:

Thread: "vshost32-clr2.exe has stopped working" - >不是以编程方式

VShost32.exe stopped working, but I can continue debugging - >没有帮助

3 个答案:

答案 0 :(得分:1)

也许你应该在捕获异常时添加某种日志记录。编程关闭的原因是因为抛出异常时退出方法,导致Main方法退出。

答案 1 :(得分:1)

在try catch块中尝试在catch中放入一些逻辑,例如:

catch(Exception e)
{
   MessageBox.Show("Error: " + e.Message, "Exception Thrown", MessageBoxButtons.OK, MessageBoxIcon.Error);
   OtherMethod(); //Or something like this
}

显然会有更好的方法来解决这个问题,我只提供一个简单的解决方案。

答案 2 :(得分:1)

可能是因为第三方库中的本机代码而且你不能以这种方式捕获本机异常,我在C#中使用LibVlc时遇到了类似的问题,

您可以在此处找到一些帮助来捕获原生异常(http://msdn.microsoft.com/en-us/magazine/dd419661.aspx

类似问题Can you catch a native exception in C# code?

还尝试从catch语句中删除(Exception ex)