Try/Catch 没有捕获异常
Try/Catch doesn't catch exception
我有一个 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");
}
}
}
My new Updated Apconfigwith 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>
尝试添加
<runtime>
<legacyCorruptedStateExceptionsPolicy enabled="true" />
</runtime>
到配置文件。
来源 here.
某些异常不会被 try..catch 块捕获,除非您在函数上指定属性 [HandleProcessCorruptedStateExceptions]
(代码中的 Main
函数)。当然,同样可以通过修改 Oxoron 描述的配置文件来完成。
您的代码中的一个问题是您从处理会话的 后台 线程抛出 System.ArgumentException
;此类异常不会被主线程上的异常处理程序捕获。
除此之外,您现在编写代码的方式是错误的;调用 Startup
然后立即调用 Shutdown
将无济于事。
我有一个 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");
}
}
}
My new Updated Apconfigwith 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>
尝试添加
<runtime>
<legacyCorruptedStateExceptionsPolicy enabled="true" />
</runtime>
到配置文件。 来源 here.
某些异常不会被 try..catch 块捕获,除非您在函数上指定属性 [HandleProcessCorruptedStateExceptions]
(代码中的 Main
函数)。当然,同样可以通过修改 Oxoron 描述的配置文件来完成。
您的代码中的一个问题是您从处理会话的 后台 线程抛出 System.ArgumentException
;此类异常不会被主线程上的异常处理程序捕获。
除此之外,您现在编写代码的方式是错误的;调用 Startup
然后立即调用 Shutdown
将无济于事。