Can you get Method name that threw Exception?

2019-05-11 22:59发布

问题:

Is there a C# method that returns to the upper-most caller, the Name of MY Method that threw an exception, even if the actual exception was thrown by another (e.g. database driver errors when my method calls it) ?

Caller -> MyMethod -> DbDriver(error)

I want "MyMethod", not "DbDriver"

I'd rather not re-throw exceptions all the way up the chain.

My current kludge, is to iterate through the StackTrace frames, and parse out my Method using MethodBase.GetCurrentMethod().DeclaringType.

Is there a built-in method to get this information or a more elegant solution?

Thanks!

回答1:

Use Exception.TargetSite property to get the method name

Gets the method that throws the current exception.



回答2:

You need the stack trace ability.

http://msdn.microsoft.com/de-de/library/system.environment.stacktrace(v=vs.80).aspx