Скобки ВО ВСЕМ утверждении try/catch в Java нужны? Действительно странные вещи
Мне нужно разрешить версию пакета из манифеста в Android. Я делаю это прямо в основной деятельности, не знаю, если это неправильно.
Я не могу проверить, работает ли это сейчас, по разным причинам я не смог бы через несколько дней, несмотря на то, что я использую Eclipse, но это действительно ранит мой разум, поскольку я довольно волнующий человек:
{ try {
String version = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
} catch (NameNotFoundException e) {
Log.e("tag", e.getMessage());
} }
Вы замечаете скобки до и после ВСЕГО заявления? Если я удалю их, Eclipse скажет
"Синтаксическая ошибка на токене"{", {ожидается после этого токена"
в открытии предыдущего действия, и подобные вещи в любом методе или утверждении после него.
Я гуглил это, потому что это то, что я могу сделать, и не нашел ничего о том, что они нужны. Учебники по Java, примеры заклинаний, попробуйте поймать без этого. Я делаю что-то очень глупое или это нормальное поведение, и мой код должен работать, когда я вернусь?
Опять извините за этот вопрос но мне просто нужно.
Заранее спасибо.
2 ответа
Вы, вероятно, имеете этот код вне любого метода. С помощью скобок Java рассматривает его как блок инициализатора экземпляра. Без брекетов это незаконно.
В этом коде есть еще одна проблема: вы инициализируете переменную version
а затем сразу же потерять информацию, потому что version
является локальным для try
блок. Вероятно, переменная должна быть объявлена вне блока.
Я думаю, что этот блок попытки прямо внутри class {
в вашем коде.
Если это так, они вам нужны, потому что в Java это рассматривается как блок инициализации экземпляра.
EDIT:
После добавления дополнительной информации к вопросу, да, это не должен быть блок инициализатора, он должен быть заключен в метод.