问题
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
来源:https://stackoverflow.com/questions/16666338/can-you-get-method-name-that-threw-exception