导语
学完异常的捕获及处理就懂的情书。
// 情书
// 理解包容全部的你
try {
we.together(time); // 和你在一起的时间
} catch(Exception e) { // 接收到所有在一起的问题
i.understandYou(); // 我理解你
i.containYou(); // 我包容你
} finally {
we.love++; // 不管发生什么,我们的爱都会越来越多
}
主要内容
异常的产生以及对于程序的影响
异常处理的格式
异常的处理流程(核心)
throw、throws关键字的使用
异常处理的使用标准(重要代码模型)
自定义异常
具体内容
异常指程序运行过程中出现的非正常现象,例如用户输入错误、除数为零、需要处理的文件不存在、数组下标越界等。所谓异常处理,就是指程序在出现问题时依然可以正确的执行完。
异常是Java的一个重大特色,合理的使用异常处理,可以让我们程序更加的健壮。
异常的产生
异常是导致程序中断执行的一种指令流,异常一旦出现并且没有合理处理的话,那么程序就会将中断执行。
范例:产生异常的代码
public class TestDemo {
public static void main(String args[]) {
System.out.println("1、除法计算开始。");
System.out.println("2、除法计算。" + (10 / 0)); // 除数不能为0,所以会产生异常
System.out.println("3、除法计算结束。");
}
}
会出现异常:
java.lang.ArithmeticException
一旦产生异常之后,产生异常的语句以及之后的语句将不再执行 默认情况下是进行异常信息的输出,而后自动结束程序的执行。
我们要做的事情是:即使出现了异常,那么也应该让程序正确的执行完毕。
异常的处理
如果想要进行异常的处理,在Java之中提供了三个关键字:try、catch、finally,而这三个关键字的使用语法如下所示。
try{
// 有可能出现异常的语句
} [catch(异常类型 对象) {
// 处理异常
} catch(异常类型 对象) {
// 处理异常
} catch(异常类型 对象) {
// 处理异常
} ... ] [finally {
// 不管是否出现异常,都执行的统一代码
}]
范例:应用异常的处理
public class TestDemo {
public static void main(String args[]) {
System.out.println("1、除法计算开始。");
try {
System.out.println("2、除法计算:" + (10 / 0)); // 除数不能为0,所以会产生异常
System.out.println("############");
} catch(ArithmeticException e) {
System.out.println("******出现异常******");
}
System.out.println("3、除法计算结束。");
}
}
输出结果:
1、除法计算开始。
******出现异常******
3、除法计算结束。
由于使用了异常处理,这样即使程序中出现了异常,发现也可以正常的执行完毕。
出现的异常的目的是为了解决异常,所以为了能够进行异常的处理,可以使用异常类中提供的printStackTrace()方法,进行异常信息的完整输出。
范例:使用printStackTrace()方法
public class TestDemo {
public static void main(String args[]) {
System.out.println("1、除法计算开始。");
try {
System.out.println("2、除法计算:" + (10 / 0));
} catch(ArithmeticException e) {
e.printStackTrace();
}
System.out.println("3、除法计算结束。");
}
}
输出结果:
1、除法计算开始。
java.lang.ArithmeticException: / by zero at TestDemo.main(TestDemo.java:5)
3、除法计算结束。
此时发现打印的异常信息是很完整的。
范例:使用finally
public class TestDemo {
public static void main(String args[]) {
System.out.println("1、除法计算开始。");
try {
System.out.println("2、除法计算:" + (10 / 0));
} catch(ArithmeticException e) {
System.out.println("******出现异常******");
} finally {
System.out.println("###不管是否出现异常我都执行!###");
}
System.out.println("3、除法计算结束。");
}
}
输出结果