c# - 为什么多个 try..catch block 在 C# 2.0 中的同一方法中无法正常工作?

标签 c# exception

我在桌面应用程序的 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/

相关文章:

java - Java 中的异常堆栈跟踪日志记录应使用什么级别?

android - list 文件中的问题

c# - 取决于编译器版本的条件编译

c# - 从 C# "Unicode"字符串中删除除字母和数字之外的所有字符

java - 处理默默终止线程的意外异常

python - cython 中的异常处理

c - 用户在 C 中输入 int 文件得到 'Access violation'

c# - Windows 窗体的可停靠自动隐藏面板控件

C# 为字节数组或图像创建哈希

c# - 将字符串拆分为三个 double