更新:Richard Tingleの回答が指摘しているように、CF10以降、CallStackGet()を使用できます。これは、ダミーの例外をスローするよりも優れています。
元の回答:最も簡単な方法は、ダミーの例外をスローしてすぐにキャッチすることです。ただし、これには、デバッグ出力にダミーの例外が表示されるという欠点があります。私にとって、これは契約を破ったものだったので、次のコードを作成しました(cflibのこのコードに基づいています)。cfcatchオブジェクトに似たオブジェクトを作成して、cfcatchオブジェクトが必要な場所で使用できるようにしたかったのです。
注:CF8以前で機能させるには、このコードを少し調整する必要がある場合があります。{...}
CF9より前は、オブジェクトを作成するための構文がサポートされていなかったと思います。
StackTrace = {
Type= 'StackTrace',
Detail= '',
Message= 'This is not a real exception. It is only used to generate debugging information.',
TagContext= ArrayNew(1)
};
j = CreateObject("java","java.lang.Thread").currentThread().getStackTrace();
for (i=1; i LTE ArrayLen(j); i++)
{
if(REFindNoCase("\.cf[cm]$", j[i].getFileName())) {
ArrayAppend(StackTrace.TagContext, {
Line= j[i].getLineNumber(),
Column= 0,
Template= j[i].getFileName()
});
}
}