黑马程序员_Java基础_异常处理

----------Android、Java开发期待与您交流----------

Java面向对象—异常处理机制

异常
    在java程序运行期间由于人为、外部环境、程序内部某种错误导致程序终止运行或没有达到预期效果的行为
    异常有两种情况:Error、Exception
    Error类层次结构描述了Java运行时系统的内部错误和资源耗尽错误。应用程序不应该抛出这种类型的对象。如果出现了这样的内部错误,除了通知用户,并尽力使程序安全终止之外,再也无能为力。
    Exception指程序本身可以处理的异常;其包含两个分支,一支为RuntimeException,另一支为其它异常
    Error和Exception的区别:异常可以被程序本身处理,错误无法处理。
    Error和Exception都直接继承自Throwable类
   
Java的异常按编译的处理方式可分为:可检查异常和不可检查异常
    可检查异常:指编译器必须处理的异常。方法应该在其首部声明所有可能抛出的异常
    不可检查异常:指编译器不需要强制处理的异常。RuntimeException的子类和Error的子类

异常处理机制:抛出异常和捕获异常
    抛出异常:在方法参数列表后和方法体之间使用Throws关键字抛出具体异常名称,如果有多个异常中间用逗号隔开,遇到异常时会交给虚拟机处理
    捕获异常:使用try、catch、finally块处理异常
         try块里面写可能出现异常的代码
         catch块里面是具体的异常类型及异常情况说明,try后面可以跟若干个catch块;一般情况子异常放在上面,父类异常放在下面。
         finally块里面的内容无论程序是否有异常发生都会被执行到,但在其之前执行到System.exit(0)(终止当前正在运行的虚拟机)则例外


Throws和throw的区别:
    1.throws用在方法上,throw用在方法内
    2.throws后面跟异常类型,throw后面跟的是异常对象

异常在子父类方法覆盖中的体现  
    1.子类覆盖父类方法时,如果父类的方法抛出异常,那么子类的覆盖方法只能抛出父类的异常或该异常的子类
    2.如果父类抛出多个异常,那么子类子覆盖方法时,只能抛出父类的子集
    3.如果父类或者接口的方法中没有抛出异常,那么子类在覆盖方法时,也不可以抛出异常;如果子类发生了异常,就只能进行捕捉

自定义异常
    定义类继承Exception或者RuntimeException
    目的:
         1.为了让该自定义类具备可抛性
         2.让该类具备操作异常的共性方法
    当要定义自定义异常的信息时,可以使用父类已经定义好的功能,将异常信息传递给父类的构造函数   
      
异常的好处
    1.将问题进行封装
    2.将正常流程代码和可能问题代码分离,方便阅读

异常处理的原则
    1.处理方式有两种:try和throws
    2.调用到抛出异常的功能时,抛出几个,处理几个。一个try对应多个catch
    3.多个catch存在时,父类的catch放到最下面
    4.catch内建议定义针对性的处理方式

常见RuntimeException
    1.java.lang.ArithmeticException
    2.java.lang.ArrayIndexOfBoundsException
    3.java.lang.ClassCastException
    4.java.lang.ClassNotFoundException
    5.java.lang.NullPointerException
    6.java.lang.IllegalArgumentException
  
---------- Android、Java开发期待与您交流----------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值