Имеет ли какой-либо эффект добавление круглых скобок вокруг аргумента throw?

Есть ли разница в написании:

throw SomeException;

и

throw(SomeException);

Я видел некоторые источники, которые утверждают, что последнее (в скобках) по какой-то причине не является хорошим вариантом, но, увы, я не могу вспомнить, где я это видел.


person Ivaylo Strandjev    schedule 14.01.2013    source источник
comment
Может быть, вы путаете это со спецификаторами throw?   -  person Pubby    schedule 14.01.2013
comment
Я думаю, что это работает так же, как оператор return; механика похожа, в конце концов.   -  person Bartek Banachewicz    schedule 14.01.2013
comment
Я не знаю это для throw, но для case не имеет значения, есть ли у вас брекеты или нет, однако некоторые люди говорят, что это выглядит некрасиво (+ некоторые правила кодирования запрещают это). Я думаю, здесь то же самое.   -  person leemes    schedule 14.01.2013
comment
Нет, я так не думаю. Кстати, тот же вопрос относится и к return. Я где-то видел, что писать return (4); — это плохая практика.   -  person Ivaylo Strandjev    schedule 14.01.2013
comment
@leemes Это может иметь значение в case, когда используются макросы; так только в довольно древнем коде.   -  person Bartek Banachewicz    schedule 14.01.2013
comment
@Ivaylo Может показаться, что это вызов функции (что, конечно, не так)   -  person Bartek Banachewicz    schedule 14.01.2013
comment
@BartekBanachewicz да, я думал об этом, но мне было интересно, есть ли какой-либо эффект, кроме как сбить читателя с толку   -  person Ivaylo Strandjev    schedule 14.01.2013
comment
throw — это оператор, а не вызов функции. я бы оставил скобки, чтобы отразить это, если они действительно не нужны.   -  person Mike Corcoran    schedule 14.01.2013
comment
@Ivaylo 6.6.3 на самом деле ничего об этом не говорит, поэтому я предполагаю, что действуют обычные скобки.   -  person Bartek Banachewicz    schedule 14.01.2013
comment
Операнд throw синтаксически похож на операнд оператора return.   -  person Grijesh Chauhan    schedule 14.01.2013


Ответы (1)


Между двумя выражениями не должно быть никакой функциональной разницы, кроме круглых скобок. Я никогда не слышал о какой-либо четкой причине, которая говорила бы, почему одно должно быть выше другого.

Для меня первый вариант выглядит более интуитивным, так как он не включает ненужные скобки!

Также, как сказал @Pubby в комментарии, не следует путать со спецификатором throw, для которого требуются круглые скобки (спецификатор throw вероятно устарело).

person iammilind    schedule 14.01.2013