Try / Catch没有捕获异常

时间:2015-05-28 06:18:41

标签: c# .net fiddler

我有FiddlerApplication的项目,为我节省了一些课程。当我启动程序时,首次启动后重启100%失败然后10%失败90%工作。

最大的问题是,当它失败时,它不会在try / catch中捕获任何异常。这是我的代码

static class Program
{
    [STAThread]
    static void Main(string[] args)
    {
        try
        {
            browserToRun.GoTo("www.test.com"); 
            FiddlerApplication.AfterSessionComplete +=  FiddlerApplication_AfterSessionComplete;

            //HERE it fails
            FiddlerApplication.Startup(8888, true, true, true);
            FiddlerApplication.Shutdown();
        }
        catch (Exception ex)
        {
            // it is not getting to here
            FiddlerApplication.AfterSessionComplete -= FiddlerApplication_AfterSessionComplete;
            FiddlerApplication.Shutdown();
        }
    }

    public static void FiddlerApplication_AfterSessionComplete(Session sess)
    {
        try
        {
            if (!sess.fullUrl.Contains("test"))
            return;
            GlobalDownloadLink = sess.fullUrl;
        }
        catch (Exception ex)
        {
            successful = false;

            throw new System.ArgumentException(ex.Message, "FiddlerApplication_AfterSessionComplete");
        }
    }
}

我的新更新的Apconfig with new error配置系统无法初始化

<configuration>

  <runtime>
    <legacyCorruptedStateExceptionsPolicy enabled="true" />
  </runtime>
<configSections>

</configSections>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>

  <appSettings>
    <add key="BrowserShow" value="Y"/>
    <add key="DebugCreate" value="true"/>
    <add key="FileName10" value="AccountActivity"/>
    <add key="FileName20" value="ForeignActivities"/>
    <add key="FileNameShar" value="MatbeotSchirim"/>
  </appSettings>
</configuration>

3 个答案:

答案 0 :(得分:4)

尝试添加 <runtime> <legacyCorruptedStateExceptionsPolicy enabled="true" /> </runtime>

到配置文件。 来源here

答案 1 :(得分:4)

除非您在代码中的函数([HandleProcessCorruptedStateExceptions]函数)上指定属性Main,否则某些异常不会被try..catch块捕获。当然,可以通过修改配置文件来完成相同的操作,如Oxoron所述。

答案 2 :(得分:0)

您的代码中的一个问题是您从处理Sessions的后台线程中抛出System.ArgumentException;这些异常不会被主线程上的异常处理程序捕获。

除此之外,你现在编写代码的方式是错误的;调用Startup然后立即调用Shutdown将无效。