Получение Stacktrace

Вы можете изменить свой метод, как показано ниже, приведя к T.

    public <T extends Root> T gets(int type) {
        switch (type) {
            case 1:
                return (T) new A();
            case 2:
                return (T) new B();
            default:
                throw new RuntimeException();
        }
    }
6
задан Gennady Vanin Геннадий Ванин 7 May 2013 в 06:19
поделиться

3 ответа

При ловле исключения, можно создать объект StackTrace и извлечь полезную информацию из него. Посмотрите следующий пример:

        StackTrace st = new StackTrace(true);
        for(int i =0; i< st.FrameCount; i++ )
        {
            // Note that high up the call stack, there is only
            // one stack frame.
            StackFrame sf = st.GetFrame(i);
            Console.WriteLine();
            Console.WriteLine("High up the call stack, Method: {0}",
                sf.GetMethod());

            Console.WriteLine("High up the call stack, Line Number: {0}",
                sf.GetFileLineNumber());
        }

PS: Это работает даже без исключения - видят, Как распечатать текущее отслеживание стека в.NET без любого исключения.

9
ответ дан 8 December 2019 в 12:22
поделиться

Система. Среда. StackTrace является потрясающим инструментом, но знать, что Вы не всегда получаете то, что Вы ищете и существуют различия между x86 и x64 платформами, которые могут влиять на вывод. Grody детализирует здесь.

1
ответ дан 8 December 2019 в 12:22
поделиться

Можно распечатать stacktrace в любое время путем вызова Среды. StackTrace

string tracktrace = System.Environment.StackTrace;
9
ответ дан 8 December 2019 в 12:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: