在Java中终止程序的不同方式

815 阅读4分钟

一般来说,Java程序在达到程序的终点时就会终止,但有时我们可能需要知道在满足某个条件或发生异常时如何终止程序。

目录:

  1. 在Java中终止程序的方法
  2. exit()方法
  3. 返回语句
  4. Halt方法

先决条件。在一篇文章中介绍Java的基础知识

让我们开始了解在Java中终止程序的不同方法:

在Java中终止程序的方法

终止一个程序意味着停止程序的执行,更确切地说,是杀死执行程序的进程。这可以从执行程序的终端完成,但也可以从Java代码中完成。

在Java中终止程序的不同方法是:

  1. 使用exit()方法
  2. 返回关键字
  3. 使用Halt方法使JVM本身停止运行

exit()方法

System类包含几个有用的类字段和方法。System类提供的设施包括标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;以及快速复制数组一部分的实用方法。System类提供的一个重要方法是exit()。exit可以被SecurityManager类禁用。

语法:

System.exit(int status)

状态值可以用来表示程序的结果

  • 当执行顺利时使用0。
  • 当发生一些错误时,使用任何其他的整数值。不同的值可以表示不同类型的错误。

例子:

import java.util.*;

class Example{

    public static void main(String[] args)
    {
        System.out.println("Hello , You've reached the first print statement");
        
        System.exit(0);
        
        System.out.println("Second Println here");
    
    }
}

输出:

Hello , You've reached the first print statement

从上面的例子中我们可以看到,在exit()方法被调用后,JVM将终止,超过这个调用的行不会被执行。
System.exit()调用在内部调用了Runtime.getRuntime().exit(0)。

返回语句

Return语句通常用于从一个函数中返回一个值,如果该函数返回任何值,否则它用于终止一个函数,如果它返回无效。如果你在返回后添加更多的代码,编译器会抱怨代码无法到达:

class Example{

     public static void Main(String[] args)
    {
        if(args.length < 2)
        {
            System.out.println("Expecting more arguments");
            return;
        }
        for(String s : args)
        {
            System.out.println(s);
        }
    
    }

}

执行:

java Example hello

输出

Expecting more arguments

从上面的程序中,我们可以清楚地看到,只有当return出现在main方法中时,它才能被用来退出程序。如果我们在return后面放一些代码会发生什么?让我们来看看:

class Demo{
    public static void Main(String args[])
    {
        System.out.println("Code After Return?");
        return;
        System.out.println("Cannot print this or even execute");
    }
}

当我们试图执行这个程序时,我们会得到以下错误:

Demo.java:6:error: unreachable statement
System.out.println(“Cannot print this or even exeute”); 
^ 
1 error 

因此,Return只有在主方法内才是可行的退出方式。

停止方法

每个Java应用程序都有一个Runtime类的实例,它允许应用程序与运行环境进行交互。
这个类有各种方法与Java虚拟机的运行环境进行交互。这个类的几个用途包括:

  • 用来获取当前的运行时间
  • 可用于查找Java虚拟机中的可用内存
  • 通过启动关机序列退出运行中的Java虚拟机
  • 可以用来强行终止当前运行的Java虚拟机

我们感兴趣的是这个Runtime类的halt方法。当你调用exit方法时,Shutdown序列被启动,Shutdown Hooks或Exit finalizers被调用。这些Hooks是JVM在关闭时要执行的代码片段。Halt方法强制终止了JVM,因此没有调用Hooks。由于Halt方法会突然终止JVM,所以在使用时应该非常谨慎。Halt方法很少被使用。可以通过SecurityManager类来禁用Halt。

语法:

Runtime.getRuntime().halt(int status);

就像exit()方法一样,状态可以表示成功或失败。

class HaltDemo{

    public static void Main(String args[])
    {
        System.out.println("Forcibly Terminating JVM");
        
        Runtime.getRuntime().halt(0);
        // Won't Execute as The JVM has terminated.
        Syste,.out.println("Are we Stil running");
    
    }

}

输出

Forcibly Terminating JVM

因此,Halt应该只在我们知道自己在做什么的时候使用。

总结

在大多数情况下,程序到达终点后会自行终止,但在不寻常的情况下,如出现异常时,开发者必须知道如何终止程序。Java提供了几种终止程序的方法。这些方法包括上面提到的主题。开发人员在使用这些终止方法时必须谨慎。

通过OpenGenus的这篇文章,你必须掌握使用不同技术终止Java程序的完整知识。