问题假设:
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异常处理
发布评论