异常 Exception

根类

java.lang.Throwable

其下分Error、Exception(即异常)

Error通常出现在内存溢出、系统崩溃时。

Exception分为编译时异常与运行时异常,前者必须处理,后者可选处理。

  • 编译时异常 CheckedException
  • 运行时异常 RuntimeException

在异常处理中,常用的方法有(Throwable类的方法):

  • printStrackTrace()【打印异常的详细信息】
  • getMessage()【获取异常发生的原因】

 

编译时异常 CheckedException

需要显式处理,即使用try...catch/throw进行处理。体现了java设计的哲学,没有完善错误处理的代码没有机会被执行。

  • try...catch使用时机:当前方法知道如何处理该异常
  • throw/throws使用时机:当前方法不知道如何处理该异常

 

运行时异常 RuntimeException

当代码在运行时才发生的异常,编译时不需要try...catch。由系统自动检测并将他们交给缺省的异常处理程序。

假设存在处理要求,也可以显示捕获他们。

常见的运行时异常:

  • 空指针异常 NullPointerException                          出现原因:调用了未经初始化的对象或不存在的对象

  • 指定的类找不到 ClassNotFoundException            出现原因:类的名称和路径加载错误;通常都是程序试图通过字符串来加载某个类时可能引发的异常
  • 数字格式异常 NumberFormatException                 出现原因:字符型数据中包含了非数字型字符
  • 数据类型转换异常 ClassCastException 
  • SQL异常 SQLException                                          出现原因:常见于操作数据库时的SQL语句错误
  • 数学计算异常 ArithmeticException                         出现原因:除零错误 by zero
  • 数组索引越界异常 ArrayIndexOutOfBoundsException 出现原因:当使用负数或大于等于数组长度的索引值时
  • 文件找不到异常 FileNotFoundException 

 

小知识点

Tip1:自定义异常要搞清楚是编译时异常(继承自Exception)还是运行时异常(继承自RuntimeException)。

Tip2:运行时异常(RuntimeException)被抛出(throw)可以不处理,即:不捕获(catch)也不声明(throws)。

Tip3:父类方法没有抛出异常,子类重写父类该方法也不可抛出异常,只能catch处理。如果父类抛出了多个异常,子类只可抛出相同异常或此异常子集。

Tip4:若finally中有return语句,则永远返回finally中的结果,应避免。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值