Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > Об исключениях


Автор: Antropoid 11.10.2006, 17:07
java.lang.IllegalArgumentException
    at ua.odesa.TimerForPosition.timeMode(+48)
что такое "+48"?

Автор: jitm 11.10.2006, 17:19
Интерестно, а почему вас не заинтересовало что такое java.lang.IllegalArgumentException ???

Автор: Antropoid 11.10.2006, 18:01
Еще ответы будут?

Автор: mr.DUDA 11.10.2006, 18:08
Номер строки или инструкции в байт-коде, вестимо

Автор: jitm 11.10.2006, 18:13
зачем ва это???!!! smile 

Автор: chief39 11.10.2006, 18:26
Цитата(Antropoid @  11.10.2006,  18:01 Найти цитируемый пост)
Еще ответы будут? 

Пока - нет.

Будут вопросы:

сигнатура метода
  ua.odesa.TimerForPosition.timeMode() 
?


и на всяк случай, в предверии будущих вопросов - что такое  +48?

Шаманов мало, поэтому никто не догадается откуда именно магическое 48.
Это легче узнать человеку у которого этот код перед глазами. 
И показать. Или объяснить, если код - тайна
 



Автор: jitm 11.10.2006, 18:38
Цитата(chief39 @  11.10.2006,  18:26 Найти цитируемый пост)
Шаманов мало, поэтому никто не догадается откуда именно магическое 48.
Это легче узнать человеку у которого этот код перед глазами. 
И показать. Или объяснить, если код - тайна


Да зачем оно вам??? У него кривые аргументы на входе оно и бросает соответствующий ексепшион java.lang.IllegalArgumentException !!!
а вам Antropoid совет, лучше чем ерундой заниматься прочитайте жавадок где ясно написано:
Цитата

public class java.lang.IllegalArgumentException
                    extends java.lang.RuntimeException
                                 Thrown to indicate that a method has been passed an illegal or inappropriate argument.
         Since:
                 JDK1.0
         See Also:
                Thread.setPriority(int)

Автор: Antropoid 11.10.2006, 18:59
Мдя...не думал, что ответы будут такими...тогда перефразирую:
, что означает N 
java.lang.IllegalArgumentException
    at ua.odesa.TimerForPosition.timeMode(+N)
, где
N - натуральное число.

mr.DUDA, спасибо, ты единственный разобрался с тупым вопросом -smile) 
т.е. для отладки эта информация будет бесполезной? зачем мне знать в какой строке байт-кода происходит исключение?

Автор: jitm 11.10.2006, 19:08
Понимаешь, если бы был у тебя в описании ексепшиона какой -то стандартизированый , известный всем символ либо строка тогда тебе с удовольствием помогли бы, а ты спросил что такое +48, это всёравно что незная определения задачи в середине рашения спросить а что такое 3450, от куда кто -то может это знать кроме того кто её решает.., так что какой вопрос такие и ответы .  smile

Автор: chief39 11.10.2006, 19:12
Цитата(Antropoid @  11.10.2006,  18:59 Найти цитируемый пост)
mr.DUDA, спасибо, ты единственный разобрался с тупым вопросом -smile) 
т.е. для отладки эта информация будет бесполезной? зачем мне знать в какой строке байт-кода происходит исключение?

При компиляции в байт-код включается информация о номерах строк.
Можно её отключить опцией javacc (какой - погляди, если интересно)
Если не отключена - тогда номер строки в байт-коде указывает на номер строки в том исходнике, из которого байт-код был создан.

Ну и, ессно, если исходник после этого поменять, а байт код  останется старым - этот номер будет показывать в небо smile

Автор: COVD 11.10.2006, 19:22
Обычно цифра указывает на номер строки в коде, где выброшено исключение. Это помогает при анализе. Но плюсов перед цифрой я не видел. 

Автор: 3x3 11.10.2006, 19:39
Цитата(Antropoid @ 11.10.2006,  18:59)
Мдя...не думал, что ответы будут такими...тогда перефразирую:
, что означает N 
java.lang.IllegalArgumentException
    at ua.odesa.TimerForPosition.timeMode(+N)
, где
N - натуральное число.

mr.DUDA, спасибо, ты единственный разобрался с тупым вопросом -smile) 
т.е. для отладки эта информация будет бесполезной? зачем мне знать в какой строке байт-кода происходит исключение?

Это исключение скорее всего бросает помянутая функция.
Допустим её параметром может быть смещение часового пояса, т.е. в пределах +-12. Ну она проверяет чо ты туда сунул и ругается, что ты передал неправильный параметр.

Автор: Antropoid 11.10.2006, 20:51
Цитата(COVD @  11.10.2006,  19:22 Найти цитируемый пост)
плюсов перед цифрой я не видел. 

дело идет о j2me, но вопрос  все же общий, поэтому имхо этот раздел форума самый подходящий


Цитата(chief39 @  11.10.2006,  19:12 Найти цитируемый пост)
номер строки в байт-коде указывает на номер строки в том исходнике, из которого байт-код был создан


к сожалению - нет...в исходнике строки с такими номерами абсолютно безобидны, а может дело действительно в j2me?!!...

Автор: powerOn 11.10.2006, 21:02
Цитата(Antropoid @  11.10.2006,  21:51 Найти цитируемый пост)
дело идет о j2me,

Ага, попался! smile  Модератор: Перемещаю тему в j2me ...

Автор: jitm 12.10.2006, 13:09
Цитата(Antropoid @  11.10.2006,  20:51 Найти цитируемый пост)
к сожалению - нет...в исходнике строки с такими номерами абсолютно безобидны, а может дело действительно в j2me?!!... 


Я извиняюсь за вчерашний напор по поводу чисел.., я не совсмем понял что вы хотите узнать .. smile ., значит + это действительно  j2me, вернее прикол его smile, а вот число это скорее всего строка конструктора ексепшиона который бросаеться у вас. Тоесть java.lang.IllegalArgumentException. Вот такие вот пироги .. smile 

Автор: jitm 12.10.2006, 13:31
У вас слкчайно не printStackTrace() выводит это сообщение .. ?

Код

java.lang.IllegalArgumentException
    at ua.odesa.TimerForPosition.timeMode(+48)

Автор: Antropoid 12.10.2006, 17:00
Цитата(jitm @  12.10.2006,  13:31 Найти цитируемый пост)
У вас слкчайно не printStackTrace() выводит это сообщение .. ?

именно он.

Автор: jitm 12.10.2006, 17:33
Цитата(Antropoid @  12.10.2006,  17:00 Найти цитируемый пост)
именно он. 

смотрите  класс Throwable метод printStackTrace() ну и строчку 48 где   err.println(); тоесть место печати ошибки .. , ребус разгадан .. smile

Автор: Antropoid 12.10.2006, 18:39
Хм...а могу ли я как-то узнать в какой строчке моего кода выскачило Exception?

Автор: Nemesis 12.10.2006, 18:39
Странно, по-моему, mr.DUDA, дал внятный ответ. 


java.lang.IllegalArgumentException
    at ua.odesa.TimerForPosition.timeMode(+48)
что такое "+48"? 


Число "48" просто указывает смещение от начала функции timeMode. Смещение указывается в качестве порядкового номера инструкции JVM в текущей функции.

Автор: Antropoid 12.10.2006, 18:41
Цитата(Nemesis @  12.10.2006,  18:39 Найти цитируемый пост)
Число "48" просто указывает смещение от начала функции timeMode. Смещение указывается в качестве порядкового номера инструкции JVM в текущей функции. 

это абсолютно не верно.

Автор: jitm 12.10.2006, 19:09
покажи свой код. вернее ту часть где ругаеться

Автор: Nemesis 12.10.2006, 19:24
это абсолютно не верно

прочитайте пожалуйста внимательнее что я написал. 
Смещение указывается в качестве порядкового номера инструкции JVM в текущей функции.
А не в качестве номера строки в вашем редакторе.

Автор: jitm 12.10.2006, 19:35
Хм, а если одинаковое количество строчек в коде то смещение по вашему должно быть одинаково . .?
Я правильно понял??

Автор: Nemesis 12.10.2006, 20:13
Кол-во строчек и кол-во инструкции совершенно разные вещи.

Вот вам пример:

Код

int b = 22;
int a = 100 / b;


казалось бы 2 строки.. а вот инструкции:

Код

bipush 22
istore_3
bipush 100
iload_3
idiv
istore 4


6 инструкций.

Автор: Antropoid 12.10.2006, 22:21
Nemesis, 
Цитата(jitm @  12.10.2006,  19:09 Найти цитируемый пост)
покажи свой код. вернее ту часть где ругаеться

я не прошу помочь мне устранить ошибку, - я прошу помочь понять, как интерпретировать эту ошибку?

Цитата(Nemesis @  12.10.2006,  20:13 Найти цитируемый пост)
Кол-во строчек и кол-во инструкции совершенно разные вещи.

т.е. число "+48" - бесполезно для меня?

Автор: Dancer 13.10.2006, 10:25
Во первых! Покажи весь стек ошибок.
Во-вторых, покажи код, где это у тебя происходит.
Без этого, мы будем тут ходить все вокруг и около. Если не хочешь (по каким бы то нибыло причинам), то можно считать вопрос закрытым, потому что это почти что похоже на принеси ТО, не знаю что, и иди ТУДА не знаю КУДА. Может быть ты ствой стек не правильно читаешь, ты видишь это в самом верху (первой строкой), а стек в Java нужно начинать смотреть с конца, то есть с последней операции которая привела к ошибке. Так что, приведи ПОЛНОСТЬЮ стек ошибок.

Автор: Antropoid 14.10.2006, 20:57
Ладно, закрыли тему...но я так ничего и не понял...

Автор: COVD 14.10.2006, 21:32
 
Цитата

а вот число это скорее всего строка конструктора ексепшиона 


И зачем это надо знать? Полезно знать место, откуда выброшено. 

PS. не заметил, что есть продолжение на другой странице smile Если это номер инструкции, то это результат "ущербности" j2me , обусловленной ограничениями на размер.

Автор: javastic 16.10.2006, 12:35
Мнда.... Филосовская тема какая-то получилась.....  smile 

Автор: Antropoid 17.10.2006, 21:55
Ага! А главное воз и ныне там...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)