异常
异常
异常
什么是异常
异常:是指在程序运行过程中所发生的不正常的事件,它会中断正在运行的程序。
在处理异常时用if-else处理的话代码会非常臃肿,程序员还会花费大量精力去堵漏洞,考虑还可能有漏洞,所以java提供了异常处理机制。
Java中如何进行异常处理
java的异常处理是通过5个关键字实现的:try、catch、finally、throw、throws
捕获异常:
try:执行可能产生异常的代码。
catch:捕获异常
finally:无论是否发生异常,代码总能执行
声明异常:
throws:声明方法可能要抛出的各种异常
抛出异常:
Throw new Exception(“自定义抛出异常!”)//手动抛出异常
使用try-catch块捕获异常,分为三种情况
第一种:正常
不产生异常,try块执行完,catch不执行
代码形式:
public void method(){
try{
//代码段(此处不会产生异常)
}catch(异常类型 ex){
//对异常进行处理的代码段
}
//代码段
}
图形显示运行过程:
第二种情况:出现异常
try块中产生异常代码段2后的代码段3不执行,如果匹配到异常类型,执行代码块4
代码形式:
public void method(){
try{
//代码段1
//代码段2
//代码段3
}catch(异常类型 ex){
//对异常进行处理的代码段4
}
//代码段5
}
图形显示运行过程:
第三种:异常类不匹配
不执行代码块3、代码段5,可以匹配异常的父类代码形式
代码形式:
public void method(){
try{
//代码段1
//代码段2
//代码段3
}catch(异常类型 ex){
//对异常进行处理的代码段4
}
//代码段5
}
图形显示运行过程:
注:
-
printStackTrace的堆栈跟踪功能显示出程序运行到当前类的执行流程
-
在catch块中处理异常
如:加入用户自定义处理信息
System.err.println("出现错误:被除数和除数必须是整数, “ +“除数不能为零。”); -
调用方法输出异常信息
e.printStackTrace(); -
异常对象常用的方法
常见的异常类型
使用try-catch-finally
在try-catch块后加入finally块是否发生异常都执行
不执行的唯一情况:有强制异常退出System.exit(1);
存在return的try-catch-finally块
代码形式:
public void method(){
try {
// 代码段 1
// 产生异常的代码段 2
} catch (异常类型 ex) {
// 对异常进行处理的代码段3
return;
}finally{
// 代码段 4
}
}
图形显示运行过程:
return退出和system.exit(0)强制退出的区别
/*
* 创建一个人类
*/
public class Person {
//属性
String name;
int age;
public Person(String name,int age ){
this.age=age;
this.name=name;
}
//方法1方法show介绍信息
public void show(){
System.out.println("姓名:"+this.name+",年龄:"+this.age);
}
//使用return结束
public void printReturn(){
if (true) {
System.out.println("结束当前方法,不影响其他方法执行");
return; //结束当前方法,不影响其他方法执行
}
}
//使用System.exit(0)强行退出
public void printExit(){
System.out.println("结束整个类");
System.exit(0);//结束整个类
}
}
//人类的测试类
public class DomePersonTest {
public static void main(String[] args) {
//创建对象
Person per=new Person("小方", 18);
//对比return和system.exit(0)退出的区别
per.printReturn();
per.show();
per.printExit();
per.show();
}
}
结果为:
结果显示在用return退出后还是能执行show方法,所以return退出的是return的方法;
而用System.exit(1)退出后没有执行show的方法,所以在使用System.exit(1)退出的是整个类,这个类中的其他方法都不能在使用了。