Как использовать переменную из оператора If-Else внутри Try-Catch (Java) - PullRequest
0 голосов
/ 08 мая 2019

Как использовать переменную из оператора if-else внутри Try-Catch в Java?

String value1 = "sample"; 
String value2 = "sample";
int a=0;

try 
{

    if(value2.equals(value1))
    {
        a = 1;
    }
     int b = a;

catch (Exception e)
{
    System.out.println("Update Error!");
}

В a в int b = a; есть ошибка, которая говорит: «Возможно, переменная не была инициализирована». Как мне использовать эту переменную?

Ответы [ 4 ]

1 голос
/ 08 мая 2019

Если вы инициализируете свою переменную, как сказал GMachado, вы не получите ошибку, которая передает значение от 'a' до 'b' в вашей попытке.У вас также есть синтаксическая ошибка в вашем коде, прямо перед перехватом отсутствует скобка.

String value1 = "sample"; 
String value2 = "sample";
int a=0;
try 
{
    if(value2.equals(value1))
    {
        a = 1;
    }
     int b = a;
} // Here!!
catch (Exception e)
{
    System.out.println("Update Error!");
}

enter image description here

0 голосов
/ 08 мая 2019

Исключения - это то, что выбрасывается, когда что-то идет не так.Вы не можете просто ожидать создания исключения.В Java много исключений.Все они наследуются от класса исключения.IE: ArrayOutOfBoundException, FileNotFoundException, ...

Вы можете использовать функцию throw, чтобы вызвать исключение.

Строки кода, которые склонны генерировать исключение, должны быть окружены try / catch.Это не значит, что все должно быть в рамках фигурных скобок.Правило состоит в том, что всякий раз, когда генерируется прием, оставшиеся строки в теле попытки игнорируются, потому что JVM ищет перехват.

0 голосов
/ 08 мая 2019

Вам необходимо присвоить некоторое значение по умолчанию для переменной int a.

String value1 = "sample"; 
String value2 = "sample";
int a = 0;

try 
{
    if(value2.equals(value1))
    {
        a = 1;
    }
    int b = a;

}
catch (Exception e)
{
    System.out.println("Update Error!");
}
0 голосов
/ 08 мая 2019

Проблема в том, что вы объявили его только в строке int a;, но никогда не инициализировали со значением, кроме как внутри блока if(value2.equals(value1)). Но поскольку этот код внутри блока if не может быть уверен, что он выполняется, a может не инициализироваться для передачи в b. Вы можете инициализировать с 0, когда вы объявляете (или назначаете значение позже):

int a = 0;
...