简体   繁体   中英

How to break out or exit a method in Java?

The keyword break in Java can be used for breaking out of a loop or switch statement. Is there anything which can be used to break from a method?

Use the return keyword to exit from a method.

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

From the Java Tutorial that I linked to above:

Any method declared void doesn't return a value. It does not need to contain a return statement, but it may do so. In such a case, a return statement can be used to branch out of a control flow block and exit the method and is simply used like this:

 return;

To add to the other answers, you can also exit a method by throwing an exception manually:

throw new Exception();

在此处输入图片说明

How to break out in java??

Ans: Best way: System.exit(0);

Java language provides three jump statemnts that allow you to interrupt the normal flow of program.

These include break , continue , return , labelled break statement for eg

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();
            }
    }   
}

Output: 1

Now Note below Program:

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();
            }
    }   
}

output:

1
11
111
1111

and so on upto

1111111111

Similarly you can use continue statement just replace break with continue in above example.

Things to Remember :

A case label cannot contain a runtime expressions involving variable or method calls

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

If you are deeply in recursion inside recursive method, throwing and catching exception may be an option.

Unlike Return that returns only one level up, exception would break out of recursive method as well into the code that initially called it, where it can be catched.

use return to exit from a method.

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

Here's another example

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

Use the return keyword to exit from a method.

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

Pls note: We may use break statements which are used to break/exit only from a loop, and not the entire program.

To exit from program: System.exit() Method:
System.exit has status code, which tells about the termination, such as:
exit(0) : Indicates successful termination.
exit(1) or exit(-1) or any non-zero value – indicates unsuccessful termination.

if (true) return; is the best solution that I use. you can use if(condition) testing that gives true or false.

Why?

  • using return; alone : gives Error:(105, 9) java: unreachable statement
public class Main
{
    public static void main(String[] args) {
        System.out.println("Hello World 1st code ");
        return;
        System.out.println("Hello World  2nd code ");
    }
}

Compilation failed due to following error(s).

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

you can test it online using : https://www.onlinegdb.com/online_java_compiler

  • using exit(int status) example exit(0); : as you know terminate all the program (The java.lang.System.exit() method terminates the currently running Java Virtual Machine. See ref. ) ; So exit , doesn't allow to break only the method and continue the execution of the caller

You can test the 3 techniques using the following code:

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 ");
    }
}

The result:

 i : 0                                                                                                                                          
 i : 1                                                                                                                                          
 i : 2                                                                                                                                          
 i : 3                                                                                                                                          
 i : 4                                                                                                                                          
Ouiiiii ,  work finished 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM