Throw will keep the stack, and throw ex will clear the stack, so that the error cannot be found.
When logging, use ex. tostring () to get error information. If the *. PDB file exists, detailed stack information, including the row number, will be displayed;
If the *. PDB file does not exist, the error message and the called method are displayed, but the error row number is not displayed.
You can use the followingCodeTest:
Class program {static void main (string [] ARGs) {console. writeline (appdomain. currentdomain. basedirectory); doexception (); console. readline ();} static void doexception () {try {error ();} catch (exception ex) {console. writeline ("orgin: {0}", ex); throw new exception ("Wrap exception", ex) ;}} catch (exception EEE) {console. writeline ("Out: {0}", eee); // throw ;}} static void error () {int I = 5; console. writeline (I); throw new exception ("Origin exception ");}}