簡體   English   中英

訪問Java堆棧幀

[英]Accessing Java Stack Frame

是否可以通過堆棧框架訪問方法參數?

因為我一直在做的一個項目,我遇到了這個需求。 如果出現異常,我想做一些日志記錄。 如果可能的話,我想以遞歸方式記錄方法的名稱和參數,直到我到達“上層”。

這是一個小例子:

class Parent{

    public int parentMethod(int param1) {
        String param2;
        Child child = new Child();
        (...)some Work(...)
        int ret = child.childMethod(param1, param2);
        (...)some More Work(...)
        return ret;
    }
}


class Child{
    public int childMethod(int param1, String param2) {
        (...) do more stuff (...)
        try {
            (...) this might generate an exception(...)
        }catch(Exception e) {
            (...) log method name and parameters value(...)
        }
    }
}

所以在這種情況下,我想記錄一下如下內容:-childMethod:param1 value,param2 value- -parentMethod:param1 value-

我認為你有一個根本問題。 對於除基元之外的任何其他內容,將傳遞參數引用 因此, 方法可以更改傳遞給它的參數值 對堆棧的簡單遍歷不會解決此問題。

我注意到上面的例子使用了原語和不可變對象。 但是我懷疑你需要更通用的解決方案。 也許某種AOP解決方案可能會起作用,但你仍然需要在調用方法時復制對象(為了記錄它們)而且我懷疑一個悲傷的世界。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM