问题假设:
10除以0,10除以1,10除以2……以此类推,输出结果。
我们都知道,10是不能除以0的,会报错,就像下面这样:

public class try_catch {
    public static void main(String[] args) {
        double sum = 0;
        for (int i = 0; i < 10; i++) {
            sum = 10 / i;
            System.out.println(sum);
        }
    }
}


那么,要怎么跳过第一个10 / 0,但是又不让程序停下来,继续执行后面的运算输出结果呢?

public class try_catch {
    public static void main(String[] args) {
        for (double i = 0; i < 10; i++) {
            try {
                double sum = 10 / i;
                System.out.println("第" + (i+1) + "次运算结果为:" + sum);
            }catch (Exception e){
                e.printStackTrace();
                continue;
            }
        }
    }
}

运行后结果:

Java异常机制用到的几个关键字:try、catch、finally、throw、throws

  • try --用于监听。将要被监听的代码(可能抛出异常的代码)放在try语句块之内,当try语句块内发生异常时,异常就被抛出。

  • catch --用于捕获异常。catch用来捕获try语句块中发生的异常。

  • finally --finally语句块总是会被执行。它主要用于回收在try块里打开的物力资源(如数据库连接、网络连接和磁盘文件)。只有finally块,执行完成之后,才会回来执行try或者catch块中的return或者throw语句,如果finally中使用了return或者throw等终止方法的语句,则就不会跳回执行,直接停止。

  • throw --用于抛出异常。

  • throws --用在方法签名中,用于声明该方法可能抛出的异常。主方法上也可以使用throws抛出。如果在主方法上使用了throws抛出,就表示在主方法里面可以不用强制性进行异常处理,如果出现了异常,就交给JVM进行默认处理,则此时会导致程序中断执行。

e是Throwable的实例异常对象,用在catch语句中,相当于一个形参,一旦try捕获到了异常,那么就将这个异常信息交给e,由e处理,printStackTrace()是异常类的一个方法。与它重载的方法还有printStackTrace(PrintStream s) 和printStackTrace(PrintWriter s)。

当try语句中出现异常是时,会执行catch中的语句,java运行时系统会自动将catch括号中的Exception e 初始化,也就是实例化Exception类型的对象。e是此对象引用名称。然后e(引用)会自动调用Exception类中指定的方法,也就出现了e.printStackTrace() ;。

printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因。

    文章原创,欢迎转载,请注明文章出处: (Java程序报错后跳过继续执行_Java异常处理.。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

更多推荐

Java程序报错后跳过继续执行_Java异常处理