【Java】异常处理

异常处理的根本优势 检测错误
异常处理通常需要更多的时间和资源。如果想让该方法的调用者处理异常,应该创建一个异常对象并将其抛出。如果能在发生异常的方法中处理异常,那么就不需要抛出或使用异常。
什么时候应该使用try-catch块 当必须处理不可预料的错误状况时应该使用它。

概念

  • try块
    包含的是在正常情况下执行的代码
  • catch快
    执行捕捉到try块抛出异常后的处理。处理这个异常的代码称为异常处理器。寻找处理器的过程称为捕获一个异常
    从一个通用父类可以派生出各种异常类。如果一个catch块可以捕获一个父类的异常对象,它就能捕获那个父类的所有子类的异常对象。
  • finally子句
    不论异常是否出现或者是否被捕获,都希望执行某些代码。使用finally子句时可能会忽略catch块。
  • throw语句
    抛出一个异常
  • throws
    声明抛出的异常
    如果方法没有在父类中声明异常,就不能在子类中对其进行覆盖来声明异常。

异常类型

Throwable类
所有异常类的根,所有Java异常类都直接或间接地继承该类。

  • 系统错误 system error
    有JVM抛出,用Error类表示,该类描述的是内部系统错误。如果发生,除了通知用户以及尽量稳妥地终止程序外,几乎什么都不做。
    • LinkageError 一个类对另一个类有某种依赖性,编译前者后,后者变得不兼容
    • VirtualMachineError JVM终端或者没有继续运行所必须的资源可用
  • 异常 exception
    用Exception类表示,描述的是由程序和外部环境所引起的错误,内被程序捕获和处理。
    • ClassNotFoundException 企图使用一个不存在的类
    • IOException 输入/输出相关的操作异常。
  • 运行时异常 runtime exception
    用RuntimeException类表示,描述的是程序设计错误,运行时异常是由JVM虚拟机抛出。
    • ArithmeticException 一个整数除以零。
    • NullPointerException 企图通过一个null引用变量访问一个对象
    • IndexOutOfBoundsException 数组的下标超出范围
    • IllegalArgumentException 传递给方法的参数非法或不合适

RuntimeException、Error以及它们的类都成为免检异常。其他所有异常都称为必检异常,意思是编译器会强制程序员检查并处理它们。

重新抛出异常

如果异常处理器没有处理某异常,或者处理器只是希望它的调用者注意到该异常,Java就允许异常处理器重新抛出该异常。

链式异常

需要同原始异常一起抛出一个新异常。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值