Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> получить стектрейс 
V
    Опции темы
goodday1941
Дата 6.9.2007, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

Репутация: 1
Всего: 9



в общем то нужно получить стектрейс в определенном месте программы

как вариант можно сденлать так (пока не тестировал но думаю работать должно):

Код

        try {
            throw new Exception("a");
        } catch (Exception e) {
            hashtable.put(id, e.getStackTrace());
        }



в нужном мне месте...  но может есть специальные методы для этого?


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
AlexeyVorotnikov
Дата 6.9.2007, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 18.6.2007
Где: Москва

Репутация: 10
Всего: 18



Кажется, кроме как через эксепшн, нельзя.

Кстати, эксепшн можно не кидать, стектрейс заполняется в конструкторе. Т.е. достаточно
Код

new Exception().getStackTrace()



--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
Samotnik
Дата 6.9.2007, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



или так
Код

try {
            throw new Exception("a");
        } catch (Exception e) {
            System.err.println("WARNING !!!" + e); 
        }

PM MAIL   Вверх
w1nd
Дата 6.9.2007, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(AlexeyVorotnikov @  6.9.2007,  11:22 Найти цитируемый пост)
Кажется, кроме как через эксепшн, нельзя.

С версии 1.5 можно воспользоваться методом Thread.getStackTrace()


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
AlexeyVorotnikov
Дата 6.9.2007, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 18.6.2007
Где: Москва

Репутация: 10
Всего: 18



Цитата(w1nd @ 6.9.2007,  13:27)
Цитата(AlexeyVorotnikov @  6.9.2007,  11:22 Найти цитируемый пост)
Кажется, кроме как через эксепшн, нельзя.

С версии 1.5 можно воспользоваться методом Thread.getStackTrace()

О! Век живи - век учись! Не знал про этот метод. Так, действительно, красивее.

Добавлено через 4 минуты и 32 секунды
Хи-хи smile В методе Thread.getStackTrace() всё-равно вызывается (new Exception()).getStackTrace()


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
batigoal
Дата 6.9.2007, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



OFF: Название темы хорошее: "поучить стектрейс"  smile 


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
w1nd
Дата 6.9.2007, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(AlexeyVorotnikov @  6.9.2007,  13:16 Найти цитируемый пост)
В методе Thread.getStackTrace() всё-равно вызывается (new Exception()).getStackTrace()

А что за версия java? Я вижу вызов 
Код
private native static StackTraceElement[][] dumpThreads(Thread[] threads);



--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
goodday1941
Дата 6.9.2007, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

Репутация: 1
Всего: 9



все равно мне стектрейс не то выводит что мне нужно... не в те методы лезет )

а вообще проблему уже решил )

всем пасибо кто откликнулсо!


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
AlexeyVorotnikov
Дата 6.9.2007, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 18.6.2007
Где: Москва

Репутация: 10
Всего: 18



Цитата(w1nd @  6.9.2007,  14:39 Найти цитируемый пост)
А что за версия java?

шестая



--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
w1nd
Дата 6.9.2007, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(AlexeyVorotnikov @  6.9.2007,  16:16 Найти цитируемый пост)
шестая

А подробнее? В 1.6.0 тоже dumpThreads() smile


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
AlexeyVorotnikov
Дата 7.9.2007, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 18.6.2007
Где: Москва

Репутация: 10
Всего: 18



Цитата(w1nd @ 6.9.2007,  18:48)
Цитата(AlexeyVorotnikov @  6.9.2007,  16:16 Найти цитируемый пост)
шестая

А подробнее? В 1.6.0 тоже dumpThreads() smile

Вот полный текст метода Thread.getStackTrace():
Код

    public StackTraceElement[] getStackTrace() {
        if (this != Thread.currentThread()) {
            // check for getStackTrace permission
            SecurityManager security = System.getSecurityManager();
            if (security != null) {
                security.checkPermission(
                    SecurityConstants.GET_STACK_TRACE_PERMISSION);
            }
        if (!isAlive()) {
        return EMPTY_STACK_TRACE;
        }
        return dumpThreads(new Thread[] {this})[0];
        } else {
        // Don't need JVM help for current thread
        return (new Exception()).getStackTrace();
    }
    }

Вон там, в конце, и есть вызов (new Exception()).getStackTrace()


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0547 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.