异常

/*
 * 异常的处理方式:
 *    方式一:捕获处理
 *        捕获处理的格式:
 *              try{
 *                 可能发生异常的代码;
 *              }catch(捕获的异常类型 变量名){
 *                 处理异常的代码;
 *              }
 *     捕获处理要注意的细节:
 *      **** try块里声明的变量是代码块内局部变量,它只在try块内有效,在catch块中不能访问该变量。***
 *         1.如果try块中代码出了异常经过处理之后,那么try-catch块外面的代码可以正常运行。
 *         2.如果try块中出了异常的代码,那么在try块中出现异常代码后面的代码是不会执行了。
 *         3.一个try块后面是可以跟多个catch块的,但只执行一个catch块。
 *         4.一个try块可以捕获多种异常类型,但是捕获的异常类型必须从小到大排放。
 *         

 * */


输出结果:ArithmeticException异常
                    0

/*
 * 异常处理方式之二:抛出处理
 * 抛出处理要注意的细节:
 *     1.如果一个方法的内部抛出了一个编译型异常对象,那么必须要在方法上声明抛出
 *     2.如果调用了一个声明抛出编译型异常的方法,那么调用者必须要处理异常
 *     3.如果一个方法内部抛出了一个异常对象,那么throw语句后面的代码都不会再执行了(一个方法遇到了throw关键字,该方法也会马上停止执行的)
 *     4.在一种情况下,只能抛出一种类型异常对象
 * throw和throws两个关键字:
 *     1.throw语句抛出的是一个异常实例,throws抛出的是一个异常类
 *     2.throw用于方法内部抛出一个异常对象,throws是用于在方法声明上声明抛出异常类型的  
 *     3.如果一个方法内部抛出了一个编译时异常对象,那么该方法必须要声明抛出。  
 *     

*对于编译型异常(Checked异常)要么显式声明抛出,要么显式捕获并处理它
 * catch和throw结合使用的情况在大型企业中非常常用
 * */


运行结果:ArithmeticException异常   (这时要注意c并没有输出)


/*
 * 自定义异常类的步骤:自定义一个类继承Exception即可
 * 定义异常类时需要提供两个构造器:一个是无参数的构造器;另一个是带一个字符串参数的构造器,
 *     这个字符串将作为该异常对象的描述信息(也就是异常对象的getMessage()方法的返回值)
 * 需求:模拟feiQ上线的时候,如果没有插上网线,那么就抛出一个没有插上网线的异常,如果已经插上网线了,
 *      那么就正常显示好友列表
 * */


运行结果:day10.NoIpException: 没有插网线
           at day10.Demo10.feiQ(Demo10.java:22)
           at day10.Demo10.main(Demo10.java:15)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值