zoukankan      html  css  js  c++  java
  • AVOID "throw e" !!!

    There three kind of catch ... throw method:

    catch(Exception e)
                
    {
                    
    throw e;
                }

                
    catch(Exception)
                
    {
                    
    throw;
                }

                
    catch
                
    {
                    
    throw;
                }

    The last two method are the same, while the first is different.

    The first method will swallow down the exception's StackTrace

    Example:

     1class Class1
     2    {
     3        [STAThread]
     4        static void Main(string[] args)
     5        {
     6            try
     7            {
     8                Class1 app = new Class1();
     9                app.fun();
    10            }

    11            catch (System.Exception e)
    12            {
    13                Console.WriteLine(e.StackTrace);
    14            }

    15            Console.ReadLine();
    16        }

    17        
    18        void fun()
    19        {
    20            try
    21            {
    22                throwE();
    23            }

    24            catch(Exception)
    25            {
    26                throw;
    27            }

    28        }

    29        void throwE()
    30        {
    31            throw new Exception("my Exception");
    32        }

    33    }

    the result is:

    at ConsoleApplication1.Class1.throwE()
    at ConsoleApplication1.Class1.fun()
    at ConsoleApplication1.Class1.Main(String[] args)

    if we change the fun() to :

     1        void fun()
     2        {
     3            try
     4            {
     5                throwE();
     6            }

     7            catch(Exception e)
     8            {
     9                throw e;
    10            }

    11        }

    the result is:

    at ConsoleApplication1.Class1.fun()
    at ConsoleApplication1.Class1.Main(String[] args)

    we lose the true throw exception trace, so avoid "throw e"

  • 相关阅读:
    loj6145. 「2017 山东三轮集训 Day7」Easy
    CF1019E Raining season
    CF1261F Xor-Set
    Python笔试——递归算法学习
    Python笔试——贪心算法
    Python笔试——万万没想到抓捕孔连顺
    Python笔试——雀魂启动
    Python学习——正则表达式
    Python笔试——毕业旅行问题
    Python笔试——Stern-Brocot tree
  • 原文地址:https://www.cnblogs.com/skyfei/p/516406.html
Copyright © 2011-2022 走看看