JAVA异常笔记
什么是异常:异常是指在程序中所发生的不正常的事件
异常处理
异常处理:当程序发生了异常的时候,程序会按照预定的异常处理方式来对异常进行处理,异常处理完毕以后,程序继续运行
java的异常处理是通过五个关键字来实现的:try,catch,finally,throw,throws
try-catch
1.如果try中所有语句正常执行完毕,则不会发生异常,那么catch块中的所有语句都将会被忽略
2.如果try语句在执行中出现了异常,并且这个类型与catch中声明的异常类型相匹配,那么在try块中的剩下的语句都会被忽略,而相应的catch语句则会被执行
3.如果try语句在执行中遇到异常,而抛出的异常在catch块里面没有被声明,那么程序立刻退出
try-catch-finally
1.无论发生了什么异常finally代码块都会执行
2.try语句块中所有语句正常执行完毕finally代码块依旧会执行
3.无论try中语句是否能被catch捕捉到fially代码块都会执行
4.如果try或者catch中有return语句的话,在执行return之前会先将finally语句执行完再来执行try或者catch中的return语句
多重catch
一段代码可能引发多种异常,可以使用多重catch分别捕获
try(){
System.out.print("输入一个被除数");
int a=input.nextInt();
System.out.print("输入一个除数");
int b=input.nextInt();
}catch(InputMismatchException e){
System.out.println("数据类型转换错误");
}catch(ArithmeticException e){
System.out.println("算术错误,除数不能为0");
}catch(Exception e ){
System.out.print("可能会发生的未知错误");
}finally{
System.out.println("这句话不管怎么样都会输出");
}
声明异常:throws
java中通过throws声明了某个方法可能抛出的各种异常,throws可以同时声明多个异常,之间用逗号隔开
public void a() Throws Exception{
}
public void b(){
a();
}
b方法调用a方法后就知道a方法中抛出了异常
可以采用try-catch捕获并处理异常,也可以继续声明异常
public void b(){
try{
a();
}catch(Exception e){
System.out.print("处理异常");
}
}
//或者继续声明异常
public void b Throws Exception(){
a();
}
抛出异常:throw
public void a (){
throw new Exception("抛出异常");
}
public void b(){
try{
a();
}catch(Exception e){
e.printStackTrace();
}
}
其实throw与throws非常相似,主要区别表现在:
1.throw用于在程序中抛出异常,throws用于在声明在该方法内抛出了异常
2.throw位于方法内部,可以作为单独语句使用,throws必须跟在方法参数列表的后面,不能单独使用
3.内容不同:throw只能抛出一个异常对象,而且只能是一个;throws后面可以跟多个异常类
异常的分类
1.Throwable类:所有异常类型都是Throwable类的子类,它派生出两个子类,即Error和Exception
Error类:指光靠程序和代码本身无法修复。比如虚拟机错误。如果出现这种错误的话,只能尽力使程序安全退出
Exception类:由java程序抛出和处理的非严重错误,如所需文件找不到,运算符出错,数组下标越界,空指针,数据转换异常之类
运行时异常:不要求程序必须对他们做出处理,使用try-catch或者throws进行处理程序可以继续运行
非运行时异常:除了运行时异常外的异常。程序必须捕获或者声明抛出这个异常,否则的话会出现编译错误,无法通过编译
新手上路,如有错误还请给位大佬及时提出