С Новым годом! Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 03.06.2015
Сообщений: 116

Не понятно как работает два return в одном методе

18.02.2017, 17:48. Показов 1675. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется вот такой код. Он работает. Но мне не понятно как, т.к. дальнейшие действия зависят от того, что вернет мне этот метод.
В данном случае мне нужно, что бы по результату выполнения метода возвращалась единица, однако в конце метода есть returm null.
Короче грубо говоря идут два return:
return 1;
return null;

В итоге метод не должен вернуть null?
Или этот null возвращается только в случае, если раньше него метод ничего не вернул?

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Integer input(String _login, String _password, Context _context)
    {
        login = _login;
        password = _password;
        this.context = _context;
        Input_profile dconn = new Input_profile();
        dconn.execute();
        try {
//здесь возвращается единица
            return dconn.get();
        } catch (InterruptedException | ExecutionException e) {
            e.printStackTrace();
        }
        return null;
    }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.02.2017, 17:48
Ответы с готовыми решениями:

Как объединить в одном методе несколько событий
Добрый день! Подскажите, пожалуйста, как объединить в одном методе несколько событий, вот код private void button1_Click(object sender,...

Не понятно что делает __success(return >= 0)
Увидел определение HRESULT typedef __success(return >= 0) long HRESULT; не ясно что это означает? это похоже команда препроцессора...

Как сделать разные типы возвращаемых значений в одном методе
как сделать разные типы возвращаемых значений в одном методе? public static DateTime Metod(){...} public static Double Metod(){...}...

9
 Аватар для Lumber
345 / 141 / 51
Регистрация: 02.12.2015
Сообщений: 333
18.02.2017, 20:12
если dconn.get(); выбросит исключение InterruptedException или ExecutionException то метод вернёт null.
0
0 / 0 / 0
Регистрация: 03.06.2015
Сообщений: 116
18.02.2017, 20:59  [ТС]
Такого не может быть, ибо return null находится за пределами try...catch...
0
77 / 76 / 57
Регистрация: 07.08.2016
Сообщений: 173
18.02.2017, 21:31
Если здесь return dconn.get(); произойдёт ошибка, мы выйдем из try...catch... и функция вернёт null. Если исключения не будет, функция вернёт return dconn.get(); и завершит своё выполнение на этом.
Если return null; убрать, программа не скомпилируется, так как будет вероятность, что функция вообще ничего не вернёт.
0
 Аватар для Lynatik001
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
18.02.2017, 23:23
послушай людей, они тебе по идее правду говорят. try catch ето как if else если аналогию провести
сам подумай вот система выполняет код в блоке try, если случилось исключение то оно сразу прекращает выполение блока try, при етом выполняя блок catch и дальше идет выполяет код.
0
145 / 134 / 22
Регистрация: 28.06.2015
Сообщений: 674
19.02.2017, 11:20
Цитата Сообщение от Eugen167 Посмотреть сообщение
Такого не может быть, ибо return null находится за пределами try...catch...
Находиться. Вам уже объяснили.
Если ошибки не будет, вернут вот это return dconn.get(); Метод дальше выполняться не будет.
Если ошибка будет, выполнение прекратиться и код return dconn.get(); не будет выполнен. Тогда ваш метод ничего не вернет, а такого быть не может. Поэтому в случае ошибки возвращают null. Это return null для метода, а не для блока. И он будет выполняться всегда, если до этого не выполниться вот это код return dconn.get();
Так как то.
0
0 / 0 / 0
Регистрация: 03.06.2015
Сообщений: 116
19.02.2017, 22:28  [ТС]
Цитата Сообщение от Lynatik001 Посмотреть сообщение
послушай людей, они тебе по идее правду говорят. try catch ето как if else если аналогию провести
это понятно, просто меня сбил это момент
Цитата Сообщение от Eugen167 Посмотреть сообщение
try {
//здесь возвращается единица
* * * * * * return dconn.get();
* * * * } catch (InterruptedException | ExecutionException e) {
* * * * * * e.printStackTrace();
* * * * }
* * * * return null;
вроде return null не входит в try... catch... и получается, что должен выполнится первый return, а потом второй. Но по факту срабатывает только первый return
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
19.02.2017, 22:41
Чего ты не понимаешь, русским языком сказали тебе, по return происходит выход из метода, всё точка, конец. Никаких должен.
0
 Аватар для Lumber
345 / 141 / 51
Регистрация: 02.12.2015
Сообщений: 333
19.02.2017, 22:46
Лучший ответ Сообщение было отмечено Eugen167 как решение

Решение

Цитата Сообщение от Eugen167 Посмотреть сообщение
и получается, что должен выполнится первый return, а потом второй
После первого return'а ничего выполняться не должно т.к. return означает прекращение выполнения метода.

Исключение составляет блок finally (если бы он был). finally выполняется и после return'а (в том числе) и в нём даже можно прописать второй return тогда он тоже выполнится, а возвращаемое значение от первого return'а пропадёт.
1
0 / 0 / 0
Регистрация: 03.06.2015
Сообщений: 116
19.02.2017, 23:01  [ТС]
Lumber, я примерно так и предполагал. Спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.02.2017, 23:01
Помогаю со студенческими работами здесь

Нужно ли выполнение запроса в методе возвращать по return?
Какая разница? Если нужно просто только выполнить запрос. function a() return запрос function a() запрос

Обязательно указывать в методе Divider именно return 1?
class Number { public bool Prime(int x) { if (x <= 1) return false; for (int i =...

Как можно сделать чтобы принимаемые значения в одном методе могли передаваться в другой метод?
в метод operator_Click передаю значения нажатой кнопки, но мне надо чтобы это значение передавалось и в figure_click, которая в свою...

Как получить доступ к переменной находящейся в одном методе из другого метода в пределах одного класса
Привет всем! Очередной вопрос новичка, допустим, у меня есть метод 1, в котором назначена переменная, и метод 2 в этом же классе,...

Какой код предпочтительнее в методе MainWinProc (break или return 0)
Не понятно почему в коде используют то break толи return 0; Скажите что лучше использовать? И почему? break или return 0 LRESULT...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru