---
# System prepended metadata

title: 關於中斷執行這件事情
tags: [java, article index, tutorial article, teaching]

---

```java
public class InterruptTest {
    
    /**
     * 第一種中斷執行的狀況，break
     * */
    public static void test1() {
        for (int i = 0; i < 10; i ++) {
            if (i == 5) {
                break;	//中斷整個迴圈運作
            }
            System.out.println("test1 : " + i);
        }
        //因為只是中斷迴圈運作，所以這句會印出
        System.out.println("test1 finish");    
    }

    public static void test2() {
        for (int i = 0; i < 10; i ++) {
            if (i == 5) {
                //跳過目前這一趟迴圈的執行。
                //不過 continue 跟中斷程式執行無關，
                //純粹是講到了 break 就順便提到 continue 這樣
                continue;	
            }
            System.out.println("test2 : " + i);
        }
        //因為完全跟中斷程式運作無關，所以一定會印出這句
        System.out.println("test2 finish");
    }

    /**
     * 第二種中斷執行的狀況，return
     * */
    public static void test3() {
        for (int i = 0; i < 10; i ++) {
            if (i == 5) {
                //中斷整個方法執行，如果放在 main 裡面，就會中斷整個程式運作
                return;
            }
            System.out.println("test3 : " + i);
        }
        //也因為中斷整個方法運作，所以這句不會印出
        System.out.println("test3 finish");
    }

    /**
     * 第三種中斷執行的狀況，System.exit
     * */
    public static void test4() {
        for (int i = 0; i < 10; i ++) {
            if (i == 5) {
                System.exit(0);	
                //直接強制中斷所有程式運作，包含伺服器
                //所以在單機使用沒問題，在 web container 上就別使用了
                //
                //帶入 0 的意思代表正常結束這個程式。
                //如果帶入 1 的話，代表在你的認知裡面這個中斷是不正常的
            }
            System.out.println("test4 : " + i);
        }
        //因為中斷整個程式運作，所以這句不會印出
        System.out.println("test4 finish");
    }

    public static void main(String[] args) {

        test1();
        test2();
        test3();
        //test4();
        System.out.println("all method finish");
        //如果 test4 有執行，那麼這句就不會印出，因為已經中斷整個程式了
    }
}
```