关于C#try catch异常捕获语句一点需要注意的地方

在调用某函数时,如果使用了try catch语句捕获该函数产生的异常,而如果这个函数内调用了其它函数,其它函数又掉了另外的函数,如果这些被调用的函数中任意一个抛出了异常,而异常所在的代码块没有异常捕获的操作,于是这个异常会被最外层的try catch语句捕获,而此时产生的异常已经远远超出了你最开始的预期,当它输出了你指定的错误提示后,你回来查找错误却发现难以找到该异常是哪段代码抛出的。比如以下代码



class Program
    {
        static void Main(string[] args)
        {
            try { Fun_1(); }
            catch { Console.WriteLine("出错了???"); }

            Console.ReadKey();
        }

        static void Fun_1()
        {
            Fun_2();
        }

        static void Fun_2()
        {
            Fun_3();
        }

        static void Fun_3()
        {
            Fun_4();
        }

        static void Fun_4()
        {
            Fun_5();
        }

        static void Fun_5()
        {
            throw new Exception("Fun_5跑出了异常!");
        }



这份代码中,主函数调用Fun_1,Fun_1调用Fun_2以此类推,直到Fun_5抛出异常,而这分代码中只有main函数里面写了捕获异常的逻辑,所以Fun_5的异常在main函数调用Fun_1的地方捕获并处理,如果整个工程的代码量比较大,那么这个异常可能要调试很久才能被找到!


所以结论是,如果要使用try catch语句捕获异常,那么要在所有可能抛出异常的时候都要捕获异常,这样才能尽可能的减少寻找BUG的时间!


(2016年9月9日修改:)今天发现可以使用Exception类接受错误信息,比如吧上述代码主函数改成这样


static void Main(string[] args)
        {
            try { Fun_1(); }
            catch (Exception ex){ Console.WriteLine("出错了???    " + ex.Message); }

            Console.ReadKey();
        }

这样可以得到准确的错误信息,利于更快的找到错误的位置,但是最好还是要尽可能的作出完整的异常捕获逻辑才能在产生异常时,第一时间追踪到异常的代码处。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值