私も行きStackFrame
ます。@Tigranの回答に拡張機能を投稿しています(try{...}catch{...}
ブロック内でもう少し明確な使用法を求めたため)、これが使用法を理解するのに役立つ場合は、私のものではなく、彼の回答を受け入れてください:
try
{
int a = 0;
var r = 1 / a;
}
catch (Exception ex)
{
throw new Exception(
String.Format("{0} Method name: {1}",
ex.Message,
GetCallingMethodName()),
ex);
}
GetCallingMethodName
:_
private static string GetCallingMethodName()
{
const int iCallDeepness = 1; //DEEPNESS VALUE, MAY CHANGE IT BASED ON YOUR NEEDS
System.Diagnostics.StackTrace stack = new System.Diagnostics.StackTrace(false);
System.Diagnostics.StackFrame sframe = stack.GetFrame(iCallDeepness);
return sframe.GetMethod().Name;
}
PS @Tigran、必要ないと思われる場合は、この回答を削除します。