throw null;
От: Аноним  
Дата: 13.02.08 13:21
Оценка:
Открыл для себя что вот так очень даже можно писать
throw null;


Теперь возник вопрос — зачем так писать?
Re: throw null;
От: denis.zhdanov Россия http://denis-zhdanov.blogspot.com/
Дата: 13.02.08 13:25
Оценка: 1 (1)
Здравствуйте, Аноним, Вы писали:

А>Открыл для себя что вот так очень даже можно писать

throw null;


А>Теперь возник вопрос — зачем так писать?


Как зачем, чтобы получить NPE конечно же.

А вообще, следующий фрагмент кода тоже смущает?

        RuntimeException e = null;
        throw e;
http://denis-zhdanov.blogspot.com
Re[2]: throw null;
От: Аноним  
Дата: 13.02.08 13:27
Оценка:
DZ>Как зачем, чтобы получить NPE конечно же.
throw new NullPointerException();

DZ>А вообще, следующий фрагмент кода тоже смущает?

Смущает.
Re[3]: throw null;
От: denis.zhdanov Россия http://denis-zhdanov.blogspot.com/
Дата: 13.02.08 13:30
Оценка:
Здравствуйте, Аноним, Вы писали:

DZ>>А вообще, следующий фрагмент кода тоже смущает?

А>Смущает.

А такой?

    public static void main(String[] args) throws Exception {
        RuntimeException e = null;
        test(e);
    }

    public static void test(RuntimeException e) {
        throw e;
    }
http://denis-zhdanov.blogspot.com
Re[2]: throw null;
От: Аноним  
Дата: 13.02.08 13:32
Оценка:
DZ>Как зачем, чтобы получить NPE конечно же.
И вообще мне почему-то кажется что NPE в этом случае — следствие подобного использования throw.
Или я не прав?
Re[3]: throw null;
От: denis.zhdanov Россия http://denis-zhdanov.blogspot.com/
Дата: 13.02.08 13:54
Оценка: :))
Здравствуйте, Аноним, Вы писали:

А>И вообще мне почему-то кажется что NPE в этом случае — следствие подобного использования throw.

А>Или я не прав?



Если была приведена одна строчка кода, и при ее выполнении генерируется NPE, логично, что 'NPE в этом случае — следствие подобного использования throw'
http://denis-zhdanov.blogspot.com
Re[2]: throw null;
От: Аноним  
Дата: 13.02.08 17:42
Оценка:
Здравствуйте, denis.zhdanov, Вы писали:

Скажите, а какой тип у null в операторе throw null; ?

Излишнее цитирование удалено. Обратите внимание, что оно запрещено правилами форума.
Re[3]: throw null;
От: Cyberax Марс  
Дата: 13.02.08 19:44
Оценка:
Здравствуйте, http://chabster.blogspot.com/, Вы писали:

HCB>Скажите, а какой тип у null в операторе throw null; ?

NullPointerException.class
Sapienti sat!
Re[4]: throw null;
От: Дм.Григорьев  
Дата: 13.02.08 20:40
Оценка:
Здравствуйте, Cyberax, Вы писали:

HCB>>Скажите, а какой тип у null в операторе throw null; ?

C>NullPointerException.class

Блин, объясните тупому, вся эта ветка — действительно стёб, или мне только так кажется? Неужели кто-то и вправду пишет throw null?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
http://dimgel.ru/lib.web — thin, stateless, strictly typed Scala web framework.
Re[5]: throw null;
От: Cyberax Марс  
Дата: 13.02.08 21:28
Оценка:
Здравствуйте, Дм.Григорьев, Вы писали:

HCB>>>Скажите, а какой тип у null в операторе throw null; ?

C>>NullPointerException.class
ДГ>Блин, объясните тупому, вся эта ветка — действительно стёб, или мне только так кажется? Неужели кто-то и вправду пишет throw null?
Нуу... Наполовину стёб
Sapienti sat!
Re[5]: throw null;
От: dshe  
Дата: 14.02.08 08:41
Оценка: 1 (1)
Здравствуйте, Дм.Григорьев, Вы писали:

ДГ>Здравствуйте, Cyberax, Вы писали:


HCB>>>Скажите, а какой тип у null в операторе throw null; ?

C>>NullPointerException.class

ДГ>Блин, объясните тупому, вся эта ветка — действительно стёб, или мне только так кажется? Неужели кто-то и вправду пишет throw null?


Как раз совсем недавно в коде, с которым я работаю, мне встретилась такая конструкция. Автор был удивлен и не знал, зачем он это написал. Скорее всего подразумевалось return null, хотя в той конкретной ситуации следовало бы выбросить исключение. Похоже, что автор как раз и не мог тогда решиться, что лучше сделать: вернуть null или выбросить исключение, и в результате написал throw null.

Считаю, что в конструкции throw null нет никакого криминала. VM spec четко говорит о том, что в данном случае должно быть выброшено NullPointerException. И, чтобы сэкономить на символах, в принципе можно написать throw null. С другой стороны, чтобы избежать недоумения коллег, лучше, наверное, подобных конструкций избегать.
--
Дмитро
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.