Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
43 / 17 / 4
Регистрация: 22.02.2012
Сообщений: 316
1

Почему нельзя использовать переменную из блока try/catch

28.01.2015, 21:45. Просмотров 1558. Ответов 6
Метки нет (Все метки)

Вечер добрый.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
public class Main {
 
    public static void main(String[] args){
String text = "{\"balance\":1000.21,\"num\":100,\"inner\":{\"lol\":1,\"lol2\":2},\"nickname\":null,\"is_vip\":true,\"name\":\"foo\"}";
 
try {
            JSONObject json = (JSONObject)new JSONParser().parse(text);
 
        } catch (ParseException e) {
            e.printStackTrace();
        }
 
        System.out.println(json.get("balance"));
}
}
В таком случае буде эксепшн, а если перенести вывод в блок try то все норм.
В чем причина?
p.s Не судите строго - в джаве пару дней.
Спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.01.2015, 21:45
Ответы с готовыми решениями:

Почему выдает ошибку, что нельзя использовать переменную y1?
Почему выдает ошибку, что нельзя использовать переменную y1? Если заменить переменную y1 на любую...

Почему нельзя злоупотреблять Try-Catch
В общем такая ситуация, я как программист, знаю что нет такой ошибки, которую нельзя обработать, и...

Как повторно использовать переменную, которая находится в try/catch
Столкнулся со следующей проблемой. Мне нужно повторно использовать переменную которая находиться...

Нельзя использовать переменную которой не присвено значение
Умные люди объясните пожалуйста такую вешь. Почему когда я спрашиваю if(TemporaryObject == null)...

6
Эксперт Java
2350 / 2182 / 556
Регистрация: 28.12.2010
Сообщений: 8,547
28.01.2015, 22:04 2
будет не ексепшн а ошибка компиляции. переменная видна только в пределах блока {}
1
43 / 17 / 4
Регистрация: 22.02.2012
Сообщений: 316
28.01.2015, 22:26  [ТС] 3
Спасибо.
А как мне тогда возвращать значение для метода?
Ведь метод должен что-то возвращать, а от try/catch я отказаться не могу.
0
Эксперт Java
2350 / 2182 / 556
Регистрация: 28.12.2010
Сообщений: 8,547
28.01.2015, 23:02 4
так же как и обычно. пишите return
Хотя в данном случае непонятно куда вы возвращать собираетесь
1
43 / 17 / 4
Регистрация: 22.02.2012
Сообщений: 316
29.01.2015, 21:27  [ТС] 5
Это я для примера так написал.
Вот код.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package ru.my.database;
 
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
 
public class JSON {
    
    public JSONObject getResult() {
        String text = "{\"balance\":1000.21,\"num\":100,\"inner\":{\"lol\":1,\"lol2\":2}}";
 
        try {
            JSONObject json = (JSONObject) new JSONParser().parse(text);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return json;
    }
}
В итоге я получаю ошибку компиляции
Error27, 24) java: variable json might not have been initialized

Добавлено через 13 минут
Перевести то я перевел, мол: переменная может быть не инициализирована(если буде эксепшн), но не понимаю как записать чтобы работало.
0
Эксперт Java
2350 / 2182 / 556
Регистрация: 28.12.2010
Сообщений: 8,547
29.01.2015, 22:00 6
Лучший ответ Сообщение было отмечено Gabriel.exe как решение

Решение

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class JSON {
    
    public JSONObject getResult() {
        String text = "{\"balance\":1000.21,\"num\":100,\"inner\":{\"lol\":1,\"lol2\":2}}";
 
        try {
            JSONObject json = (JSONObject) new JSONParser().parse(text);
            return json;
        } catch (ParseException e) {
            e.printStackTrace();
            return null;
        }
    }
}
Добавлено через 34 секунды
Или так

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class JSON {
    
    public JSONObject getResult() {
        String text = "{\"balance\":1000.21,\"num\":100,\"inner\":{\"lol\":1,\"lol2\":2}}";
        JSONObject json = null;
 
        try {
            json = (JSONObject) new JSONParser().parse(text);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return json;
    }
}
1
43 / 17 / 4
Регистрация: 22.02.2012
Сообщений: 316
29.01.2015, 22:23  [ТС] 7
Мирской поклон тебе
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.01.2015, 22:23

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Почему break нельзя использовать в if?
почему break нельзя использовать в if вот код if(f.eof()==1) { break; } про break MVS...

Почему в начале класса нельзя инициализировать переменную?
public partial class Winter : Form { List<string> list = new List<string>; ...

Почему нельзя использовать глобальные переменные
Здравствуйте, собственно вышел сиз данным вопросом в гугл и на стаке нашел такой ответ:...

Почему структуру нельзя использовать в классе?
#include <iostream> class editor_form { struct prop { int y; }; prop...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.