Java基础知识(异常处理)

说明:其中内容摘自:《Java程序员面试宝典》,这里仅供学习使用。

1. finally块中的代码什么时候被执行?

Java的异常处理中,finally块的作用就是保证无论出现什么情况,finally块中的代码都会被执行。所以无论在try或catch中return,finally中的代码会在return之前执行。如果finally中有return语句,则会覆盖上面所有的return语句。

那么finally块是否一定会被执行?不一定。

  • 程序在try语句块之前就出现异常,程序会立即结束。
  • 程序在try块中强制退出(System.exit(0);)。

2. 异常处理的原理是什么?

异常是指程序运行时(非编译时)所发生的的非正常情况或错误,当程序违反了语义规则时,JVM就会将出现的错误表示为一个异常并抛出。异常处理的目的为:提高程序的安全性和鲁棒性

Java将异常当做对象来处理,并定义了一个基类(java.lang.Throwable)作为所有异常的父类,这些异常类分为ErrorException两大类。

违法语义检查包括两种情况:

  • 一种是Java类库内置的语义检查。
  • 一种是Java允许开发人员扩展这种语义检查,创建自己的异常类。

3. 运行时异常和普通异常有什么区别?

Java提供了两种错误的异常类,分别为ErrorException,他们共同的父类为Throwable

(1)Error表示程序在运行期间出现了非常严重的错误,并且该错误是不可恢复的,属于JVM层次的错误,这种错误会导致程序终止执行。此外,编译器不会检查Error是否被处理,因此在程序中不推荐去捕获Error类型的异常。

(2)Exception比表示为可恢复的异常,是编译器可以捕获的。包含两种类型:检查异常(checked exception)和运行时异常(runtime exception)。

检查异常(不是运行时异常的其他异常都是检查异常),例如SQL异常和IO异常。Java编译器强制程序去捕获这种类型的异常,即把可能会出现的这些异常方法try块中,把对异常的处理放到catch块中。这种异常一般在如下情况中使用:

  • 异常的发生不会导致程序出错,进行处理后可以继续执行后续的操作。
  • 程序依赖于不可靠的外部条件,例如系统IO。

运行时异常,编译器不强制捕获这种异常。当出现这种异常时由JVM进行处理,常见的运行时异常包括:

  • NullPointerException
  • ClassCastException
  • ArrayIndexOutOfBoundException
  • ArrayStoreException(数组存储异常)
  • BufferOverflowException(缓冲区溢出异常)
  • ArithmeticException(算术异常)等

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值