Как временно деактивировать все блоки try / catch?

В Java переменные класса и экземпляра принимают значение по умолчанию (null, 0, false), если они не инициализируются вручную. Однако локальные переменные не имеют значения по умолчанию. Если локальной переменной не присвоено значение, компилятор откажется компилировать код, который его читает. IMHO, это приводит к выводу, что инициализация локальной переменной с некоторым значением по умолчанию (например, null, которое может привести к NullPointerException позже), когда оно объявлено, на самом деле плохо. Рассмотрим следующий пример:

Object o;
if (<some boolean condition>)
  o = <some value>;
else
  o = <some other value>;
System.out.println(o);

Инициализация o с нулем совершенно не нужна, поскольку компилятор Java проверяет во время компиляции, что любой путь кода инициализирует o (с нулевым или некоторое ненулевое значение) перед чтением переменной. Это означает, что компилятор откажется компилировать строку System.out.println(o);, если вы прокомментируете любую из двух инициализаций переменной o в фрагменте кода выше.

Это выполняется для Java и возможно, только для Java. Я не знаю о языке, как C #. Тем не менее, в хорошем старом C (и, возможно, C ++), всегда рекомендуется инициализировать переменные при объявлении их AFAIK. Такие «старые школьные» языки программирования могут быть причиной того, что рекомендация всегда инициализировать переменные появляется в книгах и дискуссиях о современных языках, таких как Java, где компилятор отслеживает, была ли инициализирована переменная или нет.

21
задан DaveInCaz 8 November 2018 в 13:11
поделиться

4 ответа

Можно изменить способ, которым повреждается Visual Studio, когда исключение происходит. По умолчанию это повреждается на необработанных исключениях. Если Вы переходите к меню Debug> Exceptions, можно снять флажок с Исключениями Общеязыковой среды выполнения и внести другие изменения в поведении IDE, когда исключения происходят. Например, у Вас может быть он повреждение только на одном виде исключения; там существует длинный список.

я сделал это в редких случаях при попытке отладить.

0
ответ дан DOK 8 November 2018 в 13:11
поделиться
  • 1
    Я don' t знают о VB, но на языках я действительно знаю поразрядное, и совсем другое животное, чем булевская переменная и. Например, в C ' 2 & & 1' верно, в то время как ' 2 & 1' ложь (ни один из тех же битов не установлен в этих двух операндах). – T.E.D. 21 September 2009 в 13:43

Если Вы хотите сделать в IDE, Отладке->, Исключениями является диалоговое окно, где можно попросить, чтобы IDE повредился, когда specific/category/all исключения выдаются.

1
ответ дан shahkalpesh 8 November 2018 в 13:11
поделиться
  • 1
    @Kibbee: Извините, но Вы ошибаетесь. Вы путаете битовые операции с логическими операциями и вероятно используете Option Strict Off, который позволяет более слабую проверку типа. Тем не менее, there’s чистое семантическое различие между этими двумя операциями и битовыми операциями никогда не предназначались для условных выражений в VB.NET (если бы они были, они все еще работали бы с Option Strict On который они don’t). – Konrad Rudolph 18 September 2009 в 20:41

Нет, нет. Почему там был бы? Чего Вы пытаетесь достигнуть?

, Если Вы хотите повредиться, как только конкретный тип исключения брошен, можно заставить Visual Studio делать это (Отладка-> Исключения; выберите тип исключительной ситуации, которым Вы интересуетесь и устанавливаете флажок "Thrown"). Мне трудно думать о любой другой причине, почему Вы хотели бы выключить обработку ошибок...

РЕДАКТИРОВАНИЕ: Одна точка, о которой я не думал прежде - какую версию Visual Studio Вы используете? Если это - Экспресс, я не уверен, поддерживается ли это - я могу проверить, но это возьмет некоторое время. Сообщите мне, должен ли я...

14
ответ дан Jon Skeet 8 November 2018 в 13:11
поделиться
  • 1
    VB использует то же понятие, за исключением того, что VB имеет AndAlso и OrElse, если Вы хотите сорвать. – Kibbee 18 September 2009 в 19:04

Для ловли исключений момент, они брошены ("исключения первого шанса" в языке Win32):

  • в VS2008: перейдите в Отладка , Исключения...

  • VS2015: это было перемещено в [1 111] Отладка> Windows>, Настройки Исключения

Тогда проверяют поле , Брошенное для [1 113] Исключения Общеязыковой среды выполнения .

enter image description here

34
ответ дан DaveInCaz 8 November 2018 в 13:11
поделиться
  • 1
    @Carson Myers: Тогда у Вас должен, вероятно, быть другой если блок, демонстрирующий ту логику. – Ben S 18 September 2009 в 17:46
Другие вопросы по тегам:

Похожие вопросы: