11_java零基础入门_异常

1、异常

  什么是异常?不正常就是异常

1、出现异常时,jvm会处理程序中未处理的异常:

  1. 暂停程序
  2. 报错(报错时会提示异常内容,包括什么异常,原因描述,异常行数)

 

2.不要让jvm去处理异常

 

异常处理:java提供了完整的异常的处理方案,可以帮助我们在编写的过程中,处理程序中的异常处理信息。

 

异常处理的关键字:try-catch-finally,throw,throws

 

1、try-catch

 

语法结构:

try {

//有可能出现异常的代码块

}catch(声明异常){

//异常解决办法

}

 

执行顺序:

1:执行try块中的内容

2:如果try块中的内容出现异常信息,执行catch块

3:匹配catch中声明的异常信息,如果匹配上,则执行catch中的代码

4:继续执行后续代码

5:如果catch中的异常信息没有匹配到,那么此时交由jvm处理异常

6:catch中的类型一定要注意,要能够捕获到try块中实际出现的异常信息,如果忘记了具体的异常信息可以通过使用Exception去捕获异常信息,不要在catch块中做业务逻辑判定

 

 

 

 

 

 

2、多层catch语法结构:

 

  try{

//可能出现异常的代码段

}catch(异常1){

//异常的解决办法

}catch(异常2){

//异常的解决办法

}…{

}

 

try多层catch执行顺序:

1:执行try块 如果出现异常 new出现当前异常对象

2:逐一匹配catch中的异常内容

3:如果匹配上,执行对应的catch中的代码,整个try-catch执行结束

4:如果没有匹配上jvm会去解决当前异常信息

 

注意事项:

1:在多重catch中一般情况下会在最后一个catch语句中编写exception,用来捕获可能未识别的异常信息

2:不要在第一个catch中编写父类异常,会导致所有的子类被屏蔽。

 

异常对象的常见方法:

toString:当前异常类型以及原因描述

printStackTrace:打印堆栈信息,会出现异常类型以及原因描述和异常位置错误。

getMessage:异常原因

 

3、try-catch-finally

 

语法结构:

try{

//可能出现异常的代码

}catch(异常1){

//处理办法

}…{

}finally{

//代码块

关闭资源的代码

}

 

 

执行顺序:

1:执行try块中的代码,如果出现异常 new出当前异常对象

2:逐一匹配catch中的异常内容

3:如果匹配上,执行对应的catch中的代码

4:如果未匹配上,jvm去解决当前异常信息

5:不论是否匹配成功,都会执行finally中的内容

finally中一般情况下编写关闭资源的操作

 

注意: 1:return语句不会让finally不执行

        2:finally先于return语句执行

        3:代码中存在System.exit(),可以让finally不执行

 

4、 try()-catch()-finally

 

 Jdk1.7之后对于try-catch-finally的改变:

可以通过对于流、网络连接对象的创建声明在try的()中,后续无需通过finally显式关闭资源。

 

语法结构:

try(资源1,资源2…){

//可能出现的异常信息

}catch(异常1){

//解决办法

}..{

}

 

5、异常的分类

异常分为两类,一类是checked异常,它会在编译期间就会出现异常错误;另一类是Runtime异常,它在编译期间不会报异常,但是运行就会报,在出现中更加难解决,因为不报异常错误。

 

6、异常机制:throw和throws

 

 1:throw声明当前代码块中可能存在的异常信息,并且将当前异常信息抛出给调用者。

对于调用者而言,可以通过try-catch捕获异常,如果都不管的话,jvm就会去处理异常。

2:throw会导致当前程序中断掉,后续代码不执行

3:throw定义在方法的内部,声明当前方法可能出现异常信息,可以导致当前程序中断。

4:throws在方法外,对外抛出某个异常,调用者解决当前异常,main方法中对外抛出的异常全部都由jvm做。

5:throws抛出异常,是异常解决的一种办法,定义在方法的外部,形式参数后,可以抛出多个异常通过“”,分割。

一般会将throws和throw在一起使用,throw声明的异常时检查时异常需要和throws一起使用,但是throws可以单独使用。

 

7、自定义异常

1:jdk中提供的异常信息不满足目前的使用

2:如何自定义异常:

     a:声明一个自定义异常类

     b:继承Exception

     c:编写两个构造器,一个空,一个带字符串的构造器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值