Как вырваться или выйти из метода в Java?

Ключевое слово break в Java можно использовать для выхода из цикла или оператора switch. Есть ли что-нибудь, что можно использовать для отказа от метода?


person Ali    schedule 29.10.2011    source источник
comment
Этот вопрос также стоит проверить: stackoverflow.com/q/18188123/2182237   -  person Don    schedule 13.08.2013


Ответы (7)


Используйте ключевое слово return для выхода из метода.

public void someMethod() {
    //... a bunch of code ...
    if (someCondition()) {
        return;
    }
    //... otherwise do the following...
}

Из учебника по Java, на который я ссылался выше:

Любой метод, объявленный как void, не возвращает значение. Он не обязательно должен содержать оператор возврата, но он может его содержать. В таком случае можно использовать оператор return для выхода из блока потока управления и выхода из метода, и он просто используется следующим образом:

return;
person Mark Peters    schedule 29.10.2011
comment
Будет ли это работать для выхода из конструктора? Я знаю, это немного странно, но мне нужен этот хак. - person stillanoob; 21.10.2016

Чтобы добавить к другим ответам, вы также можете выйти из метода, сгенерировав исключение вручную:

throw new Exception();

введите здесь описание изображения

person Jops    schedule 07.07.2013

Как вырваться в java??

Ответ: Лучший способ: System.exit(0);

Язык Java предоставляет три оператора перехода, которые позволяют прервать нормальный ход программы.

К ним относятся break , continue , return , помеченный оператор break, например

import java.util.Scanner;
class demo
{   
    public static void main(String args[])
    {
            outerLoop://Label
            for(int i=1;i<=10;i++)
            {
                    for(int j=1;j<=i;j++)
                    {   
                        for(int k=1;k<=j;k++)
                        {
                            System.out.print(k+"\t");
                            break outerLoop;
                        }
                     System.out.println();                  
                    }
             System.out.println();
            }
    }   
}

Выход: 1

Теперь обратите внимание на программу ниже:

import java.util.Scanner;
class demo
{   
    public static void main(String args[])
    {
            for(int i=1;i<=10;i++)
            {
                    for(int j=1;j<=i;j++)
                    {   
                        for(int k=1;k<=j;k++)
                        {
                            System.out.print(k+"\t");
                            break ;
                        }                   
                    }
             System.out.println();
            }
    }   
}

выход:

1
11
111
1111

and so on upto

1111111111

Точно так же вы можете использовать оператор continue, просто заменив break на continue в приведенном выше примере.

То, что нужно запомнить :

Метка случая не может содержать выражения времени выполнения, включающие вызовы переменных или методов.

outerLoop:
Scanner s1=new Scanner(System.in);
int ans=s1.nextInt();
// Error s1 cannot be resolved
person Isabella Engineer    schedule 07.07.2013

Если вы глубоко погружены в рекурсию внутри рекурсивного метода, возможно создание и перехват исключения.

В отличие от Return, который возвращает только один уровень вверх, исключение вырвется из рекурсивного метода, а также в код, который изначально его вызвал, где его можно перехватить.

person Audrius Meskauskas    schedule 07.07.2013

используйте return для выхода из метода.

 public void someMethod() {
        //... a bunch of code ...
        if (someCondition()) {
            return;
        }
        //... otherwise do the following...
    }

Вот еще один пример

int price = quantity * 5;
        if (hasCream) {
            price=price + 1;
        }
        if (haschocolat) {
            price=price + 2;
        }
        return price;
person Community    schedule 31.03.2018

Используйте ключевое слово return для выхода из метода.

public void someMethod() {
    //... a bunch of code ...
    if (someCondition()) {
        return;
    }
    //... otherwise do the following...
}

Пожалуйста, обратите внимание: мы можем использовать операторы break, которые используются для прерывания/выхода только из цикла, а не всей программы.

Для выхода из программы: Метод System.exit():
System.exit имеет код состояния, сообщающий о завершении, например:
exit(0): Указывает на успешное завершение.
exit(1) или exit(-1) или любое ненулевое значение – указывает на неудачное завершение.

person Atharva    schedule 17.01.2021

if (true) return; — лучшее решение, которое я использую. вы можете использовать проверку if (условие), которая дает true или false.

Почему?

  • использование только return;: дает Ошибку: (105, 9) java: недостижимый оператор
public class Main
{
    public static void main(String[] args) {
        System.out.println("Hello World 1st code ");
        return;
        System.out.println("Hello World  2nd code ");
    }
}

Компиляция не удалась из-за следующих ошибок.

Main.java:14: error: unreachable statement
        System.out.println("Hello World  2nd code ");
        ^
1 error

вы можете протестировать его онлайн, используя: https://www.onlinegdb.com/online_java_compiler

  • используя exit(int status) пример exit(0);: как вы знаете, завершает всю программу (метод java.lang.System.exit() завершает работающую в данный момент виртуальную машину Java. См. ссылку); Поэтому exit не позволяет сломать только метод и продолжить выполнение вызывающего объекта

Вы можете протестировать 3 метода, используя следующий код:

public class Main
{
    public static void do_something(int i)
    {
        System.out.println(" i : "+i);
        
        // break the method 
        /// System.exit(0); // stop all the program
        /// return;        // Main.java:20: error: unreachable statemen
        if(true) return;
        
        // do some computing 
        int res = i*i;
        
        System.out.println(" res : "+res);
        
    }
    public static void main(String[] args) {
        
        for (int i = 0; i <5; i++)
        {
            do_something(i);
        }
        
        System.out.println("Ouiiiii ,  work finished ");
    }
}

Результат:

 i : 0                                                                                                                                          
 i : 1                                                                                                                                          
 i : 2                                                                                                                                          
 i : 3                                                                                                                                          
 i : 4                                                                                                                                          
Ouiiiii ,  work finished 
person ibra    schedule 24.03.2021