Java第二阶段JavaSE3(异常)

一、try{}catch(){}

JAVA异常处理机制中的try-catch
语法:
try{
    可能出现异常的代码片段
}catch(XXXException e){
    当try中出现XXXException后的解决办法
}

try语句块不能独立存在,后面必须跟catch或finally。

补充:

Throwable->Error

Throwable->Exception->1)运行时异常

                                    ->2)非运行时异常

二、finally块

finally块
finally是异常处理机制中的最后一块,它可以直接跟在try语句块之后或最后一个catch之后。

finally语句块的特点是:
只要程序可以执行到try语句块中,无论是否出现异常,最终都要执行finally块的代码。

因此我们会将如释放资源等操作放在finally中确保执行,比如IO操作后的close()调用。

三、AutoCloseable接口

1.JDK7之后,java推出了自动关闭特性

使得我们在源代码中异常处理机制在IO应用中得到了简化

2.

只有实现了AutoCloseable接口的类才可以在这里定义并初始化。 并且编译器在编译时会将在这里定义的变量在finally中调用close将其关闭。 最终编译器会将当前代码改为如下的样子。

FileOutputStream fos = null;
try {
    fos = new FileOutputStream("fos.dat",true);
    fos.write(5);
} catch (IOException e) {
    System.out.println("wrong");
} finally {
   try {
       if( fos != null ) {
          fos.close();
       }
   } catch (IOException e) {
      e.printStackTrace();
   }
}

四、throw/throws

1.异常的抛出

throw关键字可以主动对外抛出一个异常。

通常下列情况我们会主动抛出异常:

1):当前代码片段出现了异常,但是该异常不应当在当前代码片段被解决时,可以将其抛出

2):程序可以运行,但是不满足业务要求时可以对外抛出一个异常告知。(满足语法不满足业务)

2.须在方法上使用throws

java中除了RuntimeException之外的其他异常throw抛出是编译器要求,必须在方法上使用throws声明该异常的抛出通知调用者处理该异常。

3.

当我们调用一个含有throws声明异常抛出的方法时,编译器要求我们必须处理该异常 否则编译不通过. 处理手段有两种:

1).使用try-catch捕获其声明的异常

2).在当前方法上继续使用throws声明该异常的抛出.

五、RuntimeException

1.IllegalArgumentException不合法的参数异常

2.NullPointerException空指针异常

3.ArrayIndexOutOfBoundsException数组下标越界异常

4.ClassCastException类型转换异常

5.NubmerFormatException数值格式异常

六、异常常用的方法

1.printStackTrace()

该方法用来在控制台输出异常的堆栈信息,便于程序员debug

2. String getMessage()  -----用于给用户提示或给程序做日志

获取错误信息,message一般用于给用户进行提示,或者记录log日志时使用

七、自定义异常(类名要见名知意)

1.通常使用自定义异常来表达业务错误

2.自定义异常应当做到以下几点:

1)类名要见名知意

2)需要继承Exception(直接或间接继承均可)

3)提供超类中所有的构造器

补充:

用throw抛出一个异常告知可以抛出自定义异常,当使用try-catch时显示的异常为自定义异常。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值