JAVA中的异常和错误

异常(Exception)

异常可分为两类,运行期异常(RuntimeException)和受检异常(CheckedException)

运行期异常

定义:RuntimeException及其子类都被称为运行时异常。
特点

Java编译器不会检查它。
当程序中可能出现这类异常时,倘若既"没有通过throws声明抛出它",也"没有用try-catch语句捕获它",还是会编译通过。
例如,除数为零时产生的ArithmeticException异常,数组越界时产生的IndexOutOfBoundsException异常,在对集合进行遍历时进行了修改操作会触发fail-fast机制产生的ConcurrentModificationException异常(java.util包下面的所有的集合类都是快速失败的)。

常见的异常有:

  • ClassCastException (类转换异常)
  • IndexOutOfBoundsException (数组越界)
  • NullPointerException (空指针异常)
  • ArrayStoreException (数据存储异常,操作数组的类型不一致)
  • BufferOverflowException (缓冲区溢出异常)

受检异常

定义:Exception类本身,以及Exception的子类中除了"运行时异常"之外的其它子类都属于受检异常。
特点 : Java编译器会检查它。当发生该异常时,要么通过throws进行声明抛出,要么通过try-catch进行捕获处理,否则不能通过编译。

常见的异常有

  • IOException
  • FileNotFoundException
  • SQLException

错误(Error)

定义: Error类及其子类
错误(Error): 与JVM相关的,当资源不足、约束失败、或是其它程序无法继续运行的条件发生时,就产生错误。程序本身无法修复这些错误的。例如:内存不够用了、程序运行时网络中断、程序所在的服务器断电等等。

异常和错误有什么不同

error 是JVM相关的问题。例如内存溢出。城序处理不了。exception是java程序运行中可预料的异常情况,咱们可以获取到这种异常,并且对这种异常进行业务外的处理。

运行时异常与受检异常有何异同?

都表示程序运行过程中可能出现的非正常状态。运行期异常不要求程序必须进行处理,而受检异常要求程序必须进行处理,例如将使用throws关键字声明可能出现的异常或使用try-catch-finally进行捕获。

try-catch-finally

用法: try 的代码块内如果抛出异常会跳过剩余的代码去执行 catch 代码块
finally语句可以省略,如果不省略即使前面执行了return语句也会等finally代码块执行完后再返回

	public static void main(String[] args){
       System.out.println(test());;
   }

   static int test() {
       int x = 1;
       try {
           return x;
       }
       finally {
           ++x;
       }
   }

运行结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值