Здравствуйте, 0K, Вы писали:
0K>Метод помечен "throws JDOObjectNotFoundException, UnsupportedEncodingException". Компилятор не требует ловить JDOObjectNotFoundException, только UnsupportedEncodingException. Почему так?
Здравствуйте, Alexandro, Вы писали:
A>Здравствуйте, 0K, Вы писали:
0K>>Метод помечен "throws JDOObjectNotFoundException, UnsupportedEncodingException". Компилятор не требует ловить JDOObjectNotFoundException, только UnsupportedEncodingException. Почему так?
A>JDOObjectNotFoundException — runtime exception A>UnsupportedEncodingException — checked exception
Блин, ну зачем ты рассказал. Там такие теории пошли.
Здравствуйте, 0K, Вы писали:
0K>Метод помечен "throws JDOObjectNotFoundException, UnsupportedEncodingException". Компилятор не требует ловить JDOObjectNotFoundException, только UnsupportedEncodingException. Почему так?
Компилятор игнорирует отсутствие catch для JDOObjectNotFoundException и UnsupportedEncodingException. Если я верно понял о чем ты — ты неправ.
Вот это компилится:
class E extends Throwable{};
class B extends Throwable{};
public class a
{
static public void main(String[] args) throws E, B
{
if(true)
{
throw new E();
}
else
{
throw new B();
}
}
}
Здравствуйте, Nicht, Вы писали:
N>Здравствуйте, Alexandro, Вы писали:
A>>Здравствуйте, 0K, Вы писали:
0K>>>Метод помечен "throws JDOObjectNotFoundException, UnsupportedEncodingException". Компилятор не требует ловить JDOObjectNotFoundException, только UnsupportedEncodingException. Почему так?
A>>JDOObjectNotFoundException — runtime exception A>>UnsupportedEncodingException — checked exception
N>Блин, ну зачем ты рассказал. Там такие теории пошли.
С учетом, того, что при анатации "throws JDOObjectNotFoundException, UnsupportedEncodingException" коммпилер будет игнорить оба этих исключения вне зависимости от того четет они или нет я не совсем понимаю к чему ты это ? ты про какие теории ?
Метод помечен "throws JDOObjectNotFoundException, UnsupportedEncodingException". Компилятор не требует ловить JDOObjectNotFoundException, только UnsupportedEncodingException. Почему так?
=сначала спроси у GPT=
Re: Почему throws не всегда работает?
От:
Аноним
Дата:
16.11.10 04:49
Оценка:
Здравствуйте, 0K, Вы писали:
0K>Метод помечен "throws JDOObjectNotFoundException, UnsupportedEncodingException". Компилятор не требует ловить JDOObjectNotFoundException, только UnsupportedEncodingException. Почему так?
может, уже вставлен код для отдлова кого-то, наследующегося от JDOObjectNotFoundException?
Здравствуйте, Jakop, Вы писали:
J>Компилятор игнорирует отсутствие catch для JDOObjectNotFoundException и UnsupportedEncodingException. Если я верно понял о чем ты — ты неправ.
А, да вспомнил. Кто-то мне говорил что это не на уровне компилятора сделано а на более высоком. Верно?
Т.е. среда разработки просто не знает что такое JDOObjectNotFoundException, зато знает UnsupportedEncodingException. По этому JDOObjectNotFoundException и игнорирует. Правильно? Или как?
Здравствуйте, 0K, Вы писали:
0K>Здравствуйте, Jakop, Вы писали:
J>>Компилятор игнорирует отсутствие catch для JDOObjectNotFoundException и UnsupportedEncodingException. Если я верно понял о чем ты — ты неправ.
0K>А, да вспомнил. Кто-то мне говорил что это не на уровне компилятора сделано а на более высоком. Верно?
То, что аннотация "throws JDOObjectNotFoundException, UnsupportedEncodingException" говорит компилятору не ругаццо на то, что код не обрабатывает такие исключения — это поддержка со стороны компиляторы. Возможно, эта нанотация компилится так, что и JVM проверяет это, но я этого не знаю. Насчет того, на каком более высоком уровне это обрабатывается не понял.
0K>Т.е. среда разработки просто не знает что такое JDOObjectNotFoundException, зато знает UnsupportedEncodingException. По этому JDOObjectNotFoundException и игнорирует. Правильно? Или как?
Не не так. Я думаю забудь ты про среду разработки. Поиграйся с примером что я постил и обычным ява компилером 1.5 и выше который у тебя стоит. В данном случае IDE не при чем.
Здравствуйте, Jakop, Вы писали:
J>С учетом, того, что при анатации "throws JDOObjectNotFoundException, UnsupportedEncodingException" коммпилер будет игнорить оба этих исключения вне зависимости от того четет они или нет я не совсем понимаю к чему ты это ? ты про какие теории ?
Про аннотации в исходном посте ни слова. Я не понял, откуда ты их взял. Как и сказал Alexandro, все дело исключительно в Runtime исключении.
Здравствуйте, Donz, Вы писали:
D>Здравствуйте, Jakop, Вы писали:
J>>С учетом, того, что при анатации "throws JDOObjectNotFoundException, UnsupportedEncodingException" коммпилер будет игнорить оба этих исключения вне зависимости от того четет они или нет я не совсем понимаю к чему ты это ? ты про какие теории ?
D>Про аннотации в исходном посте ни слова. Я не понял, откуда ты их взял. Как и сказал Alexandro, все дело исключительно в Runtime исключении.
"Метод помечен "throws JDOObjectNotFoundException, UnsupportedEncodingException"."(c) ну ок, не аннотация. Слово ключевое. Оговорился.
Но суть прежняя. Или мне ондому кажется что при наличии вышеуказанного совершенно пофигу JDOObjectNotFoundException Runtime исключение или нет ?
A compile-time error occurs if any ExceptionType mentioned in a throws clause is not a subtype (§4.10) of Throwable. It is permitted but not required to mention other (unchecked) exceptions in a throws clause.
A compiler for the Java programming language checks, at compile time, that a program contains handlers for checked exceptions, by analyzing which checked exceptions can result from execution of a method or constructor.
The unchecked exceptions classes are the class RuntimeException and its subclasses, and the class Error and its subclasses. All other exception classes are checked exception classes.
Здравствуйте, Аноним, Вы писали:
J>>Но суть прежняя. Или мне ондому кажется что при наличии вышеуказанного совершенно пофигу JDOObjectNotFoundException Runtime исключение или нет ?
А>если кажется, читайте устав:
С уставом знаком. Более того те ссылки что вы привели не противоречат сказанному мной, а напротив подтверждают. Может сегодня не мой день и я зря отказался от прививки против энцефалита, но я и правда не врубаюсь с чем спорите. Пост автора говорил явно, что метод будет игнорировать необработанные исключения "А" и "В"(throws JDOObjectNotFoundException, UnsupportedEncodingException). "А" при этом можно было и не указывать. Когда Alexandro сделал разумное предположение, что "A" просто unchecked я перечитал исходный пост и поставил догадливому коллеге +. Видимо автор и имел ввиду именно это. Однако, в той ветке, которую отбранчил я, я предположил, что автор имеет ввиду, что Компилятор сфейлится если второе исключение было написано через запятую и его таки решили выкинуть и не проверить. Привел пример, показал что это не так. Я по-прежнему утверждаю, что
при наличии в объявлении метода "throws JDOObjectNotFoundException, UnsupportedEncodingException" вот это "Компилятор не требует ловить JDOObjectNotFoundException, только UnsupportedEncodingException" невалидно. Понимаю, что докапываюсь. Понимаю, что всем все понятно и ужасно отрадно видеть, что народ знает устав, и даже умеет на него ссылаться к месту. Но с чем спорите то ? Все ж верно говорю ?
Здравствуйте, Jakop, Вы писали:
J> Я по-прежнему утверждаю, что J> при наличии в объявлении метода "throws JDOObjectNotFoundException, UnsupportedEncodingException" J> вот это "Компилятор не требует ловить JDOObjectNotFoundException, только UnsupportedEncodingException" невалидно.
У меня нет библиотеки JDO, котому я заменил его на RuntimeException. Можно?
Здравствуйте, Skipy, Вы писали:
S>Здравствуйте, Jakop, Вы писали:
J>> Я по-прежнему утверждаю, что J>> при наличии в объявлении метода "throws JDOObjectNotFoundException, UnsupportedEncodingException" J>> вот это "Компилятор не требует ловить JDOObjectNotFoundException, только UnsupportedEncodingException" невалидно.
S>У меня нет библиотеки JDO, котому я заменил его на RuntimeException. Можно?
Да конечно. Ваш пример выглядит вполне нормально. А в чем вопрос или аргумент ? Я же не говорил обратного.
J>С уставом знаком.
т.е. по ссылке уже сходили?
J>Более того те ссылки что вы привели не противоречат сказанному мной, а напротив подтверждают.
голословно.
попробуйте прочитать не только ссылки, но и страницы, на которые ссылки ссылаются.
приведу прежнюю цитату с выделением:
A compiler for the Java programming language checks, at compile time, that a program contains handlers for checked exceptions, by analyzing which checked exceptions can result from execution of a method or constructor.
попробуйте понять, отличаются ли unchecked exception от checked (hint: написано в 11.2)
тогда, возможно, поймете, что утверждение: J>"что при наличии в объявлении метода "throws JDOObjectNotFoundException, UnsupportedEncodingException" вот это "Компилятор не требует ловить JDOObjectNotFoundException, только UnsupportedEncodingException" невалидно."
как раз и "невалидно"
J>Может сегодня не мой день и я зря отказался от прививки против энцефалита, но я и правда не врубаюсь с чем спорите.
вижу
J>Пост автора говорил явно, что метод будет игнорировать необработанные исключения "А" и "В"(throws JDOObjectNotFoundException, UnsupportedEncodingException). "А" при этом можно было и не указывать. Когда Alexandro сделал разумное предположение, что "A" просто unchecked я перечитал исходный пост и поставил догадливому коллеге +.
и это супер!
J>Однако, в той ветке, которую отбранчил я, я предположил, что автор имеет ввиду, что Компилятор сфейлится если второе исключение было написано через запятую и его таки решили выкинуть и не проверить. Привел пример, показал что это не так.
предположили и доблестно опровергли своё предположение? круууто.
J>Я по-прежнему утверждаю, что при наличии в объявлении метода "throws JDOObjectNotFoundException, UnsupportedEncodingException" вот это "Компилятор не требует ловить JDOObjectNotFoundException, только UnsupportedEncodingException" невалидно.
вижу, что ты утверждаешь, но утверждения (сюрприз) принято обосновывать. или у тебя это... голос громкий? так по инету не слышно.
J> Понимаю, что докапываюсь. Понимаю, что всем все понятно и ужасно отрадно видеть, что народ знает устав, и даже умеет на него ссылаться к месту. Но с чем спорите то ? Все ж верно говорю ?
Здравствуйте, Аноним, Вы писали:
А>не знаю, что вы там говорите, но пишите чушь.
заведите аккаунт, я если и говорю ерунду то рискую репутацией, а вы "Аноним 453" просто говорите...
А>>не знаю, что вы там говорите, но пишите чушь. J>заведите аккаунт, я если и говорю ерунду то рискую репутацией, а вы "Аноним 453" просто говорите...
не говорите ерунды, не рискуйте вашей репутацией
а, если боитесь за репутацию — разлогиньтесь или не говорите ничего.
но это — оффтоп.
по теме — как не будет страшно за репутацию — высказывайтесь по предыдущем посланию.
чтобы не было только оффтопик, закину тогда красотищу на смежную тему. Например, на try-catch-finally блоки. Смотрите, какую красотищу нам позволяют писать:
public class TestFinally {
public static void main(String[] args) {
tryBlock:
try {
System.out.println("Inside Try Block");
throw new Exception();
} catch (Exception e) {
System.out.println("Inside Catch Block");
throw new RuntimeException();
} finally {
System.out.println("Inside Finally");
break tryBlock;
}
System.out.println("Inside main - Outside tryBlock");
}
}
правда, если кто найдёт такой автора такого кода или кода с return-ом в finally — автору не поздоровится, но пример — экзотичен и беспощаден, примерно также как и предположение, что если второе exception указано через запятую — его можно игнорировать.
А>чтобы не было только оффтопик, закину тогда красотищу на смежную тему. Например, на try-catch-finally блоки.
Это не на try/catch/finally, а на normal/abrupt completion для statement в общем случае. И в документации поведение указанного примера очень хорошо (и при этом просто!) определено. Хотя мне больше нравится с continue:
public class TestFinally {
public static void main(String[] args) {
System.out.println(getValue());
}
private static int getValue() {
for (int i = 0; i < 10; i++) {
try {
return i;
} finally {
if (i != 5) {
continue;
}
}
}
return -1;
}
}
Хотя с начальным вопросом это все связано только через Abrupt completion по причине Exception и ограничению на класс этих допустимых exception для выполнения метода в целом.
Здравствуйте, Jakop, Вы писали:
J>Здравствуйте, Skipy, Вы писали:
S>>Здравствуйте, Jakop, Вы писали:
J>>> Я по-прежнему утверждаю, что J>>> при наличии в объявлении метода "throws JDOObjectNotFoundException, UnsupportedEncodingException" J>>> вот это "Компилятор не требует ловить JDOObjectNotFoundException, только UnsupportedEncodingException" невалидно.
S>>У меня нет библиотеки JDO, котому я заменил его на RuntimeException. Можно? J>Да конечно. Ваш пример выглядит вполне нормально. А в чем вопрос или аргумент ? Я же не говорил обратного.
Э-э-э... Говорили. Вы сказали, что "при наличии в объявлении метода "throws JDOObjectNotFoundException, UnsupportedEncodingException"" утверждение "Компилятор не требует ловить JDOObjectNotFoundException, только UnsupportedEncodingException" неверно. Именно так интерпретируются Ваши слова по-русски, я специально наверху цитату оставил. Согласно семантике всё того же русского языка это утверждение можно переформулировать так: "при наличии в объявлении метода "throws JDOObjectNotFoundException, UnsupportedEncodingException" компилятор требует ловить оба исключения".
Здравствуйте, Аноним, Вы писали:
S>>Слава Богу, хоть кто-то знает. А то я от высказанных предположений чуть с ума не сошел... А>вы хоть учитесь, у того кто знает. чтобы с ума не сходить
А то из-за угла трендеть мы все умеем. Говори что хочешь, ответственности никакой...
S>>>Слава Богу, хоть кто-то знает. А то я от высказанных предположений чуть с ума не сошел... А>>вы хоть учитесь, у того кто знает. чтобы с ума не сходить S>А то из-за угла трендеть мы все умеем. Говори что хочешь, ответственности никакой...
да, под ником ведь можно после информативного ответа, написать, "Слава Богу, хоть кто-то знает."
попиарится за так, но зато отвееетственно.
Re[12]: Почему throws не всегда работает?
От:
Аноним
Дата:
16.11.10 14:03
Оценка:
M>Это не на try/catch/finally, а на normal/abrupt completion для statement в общем случае.
угу. M>И в документации поведение указанного примера очень хорошо (и при этом просто!) определено. Хотя мне больше нравится с continue:
ага, симпатичнее.
Здравствуйте, Аноним, Вы писали:
S>>>>Слава Богу, хоть кто-то знает. А то я от высказанных предположений чуть с ума не сошел... А>>>вы хоть учитесь, у того кто знает. чтобы с ума не сходить S>>А то из-за угла трендеть мы все умеем. Говори что хочешь, ответственности никакой... А>да, под ником ведь можно после информативного ответа, написать, "Слава Богу, хоть кто-то знает." А>попиарится за так, но зато отвееетственно.
"Аноним 453" будьте последовательны. Вам не нравится моя чушь, и то что говорят мои оппоненты. Выберете против кого дружить и дружите.
Предлагаю рацуху: на посты ананимуса не реагировать. На вопросы в форуме не отвечать. Может и жестко, но ИМХО польза есть от них не всегда.
Здравствуйте, Skipy, Вы писали:
S>Здравствуйте, Jakop, Вы писали:
J>>Здравствуйте, Skipy, Вы писали:
S>>>Здравствуйте, Jakop, Вы писали:
J>>>> Я по-прежнему утверждаю, что J>>>> при наличии в объявлении метода "throws JDOObjectNotFoundException, UnsupportedEncodingException" J>>>> вот это "Компилятор не требует ловить JDOObjectNotFoundException, только UnsupportedEncodingException" невалидно.
S>>>У меня нет библиотеки JDO, котому я заменил его на RuntimeException. Можно? J>>Да конечно. Ваш пример выглядит вполне нормально. А в чем вопрос или аргумент ? Я же не говорил обратного.
S>Э-э-э... Говорили. Вы сказали, что "при наличии в объявлении метода "throws JDOObjectNotFoundException, UnsupportedEncodingException"" утверждение "Компилятор не требует ловить JDOObjectNotFoundException, только UnsupportedEncodingException" неверно. Именно так интерпретируются Ваши слова по-русски, я специально наверху цитату оставил. Согласно семантике всё того же русского языка это утверждение можно переформулировать так: "при наличии в объявлении метода "throws JDOObjectNotFoundException, UnsupportedEncodingException" компилятор требует ловить оба исключения".
Не согласен. То, что я посчитал последовательность слов "Компилятор не требует ловить JDOObjectNotFoundException, только UnsupportedEncodingException" невалидной (NOT valid aka неверной, бессмысленной) не делает верным ее(последовательности) отрицание. Х.З что у вас за алгебра логика на неверных догадках
J>"Аноним 453" будьте последовательны.
и так.
J> Вам не нравится моя чушь, и то что говорят мои оппоненты.
Нет, ваша чушь мне, как раз, доставляет. И эта тоже.
Не надо придумывать за меня, что мне нравится, а что нет. Пожалуйста.
J>Выберете против кого дружить и дружите.
Выберите...
Дружба/не дружба, нравится/не нравится — странно рассуждать в таких категориях, когда речь идёт про RuntimeException-ы в техническом форуме.
Можно попытаться научить человека читать JLS, если ему непонятно поведение программы и при этом не задаваться вопросом нравится/не нравится он тебе и дружишь/не дружишь ты с ним.
J>Предлагаю рацуху: на посты ананимуса не реагировать. На вопросы в форуме не отвечать.
У меня нет вопросов — у меня для Вас только ответы. И предложение — читайте JLS, когда Вам что-то непонятно.
Если это Вам понравится, и Вы будете с ней(JLS) дружить, то и компилятору вы будете нравиться и он будет с Вами дружить. Надеюсь, изложил понятно.
J>Может и жестко, но ИМХО польза есть от них не всегда.
жёстко
Здравствуйте, Jakop, Вы писали:
J>Но суть прежняя. Или мне ондому кажется что при наличии вышеуказанного совершенно пофигу JDOObjectNotFoundException Runtime исключение или нет ?
К счастью, это кажется и документации по яве
Без разницы, заявлен RuntimeException во throws или нет. Ловить его необязательно с точки зрения компилятора.
Здравствуйте, Donz, Вы писали:
D>Здравствуйте, Jakop, Вы писали:
J>>Но суть прежняя. Или мне ондому кажется что при наличии вышеуказанного совершенно пофигу JDOObjectNotFoundException Runtime исключение или нет ?
D>К счастью, это кажется и документации по яве D>Без разницы, заявлен RuntimeException во throws или нет. Ловить его необязательно с точки зрения компилятора.