我在桌面应用程序的 Form_Load()
事件中执行此操作
string strDay = DateTime.Now.DayOfWeek.ToString().ToUpper();
try
{
fnBirthDayReminder();
}
catch (Exception ex)
{
}
try
{
if (strDay == "SUNDAY" || strDay == "TUESDAY" || strDay == "THURSDAY")
{
fnAwaitingLeaveApplicationReminder();
}
}
catch (Exception ex)
{
}
try
{
fnLeavePlanRemainder();
}
catch (Exception ex)
{
}
try
{
fnContractExpiryRemainder();
}
catch (Exception ex)
{
}
Application.Exit();
但是应用程序在第一个 try..catch
block 执行后就存在。即使我将断点放在 try..catch 之后,这些断点也不会被命中。我对这种神秘的行为感到非常困惑。请帮忙!
对于大家来说, “如果一个方法引发异常,其他方法将不会运行。”这是我使用单独的 try..catch block 的主要原因。这样,即使一个函数出现异常,下一个函数也可以执行。
编辑2
除了我在这里使用的执行下一个函数之外,即使在第一个函数期间发生异常,您能否建议我一个好的方法。你们中的一些人建议的方式(在带有多个 catch block 的单个 try block 中调用所有函数)是行不通的,这是肯定的。我正在考虑重新编码这些方法而不花费更多时间。
最佳答案
您是否尝试过在第一个 catch block 中放置断点,并检查异常消息/堆栈跟踪?我有时观察到应用程序可能会因某些类型的异常而退出,例如stackoverflow,而不是预期的行为。
try
{
fnBirthDayReminder();
}
catch (Exception ex)
{
Debugger.Break();
}
最后,您的方法在正常情况下不应抛出异常。尝试找出原因并消除错误。
关于c# - 为什么多个 try..catch block 在 C# 2.0 中的同一方法中无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9682901/