异常

1、异常的定义:异常也称例外,是在程序运行过程中发生的、会打断程序正常执行的事件;

  常见的异常有:(1)算术异常ArithmeticException

 (2)没有给对象开辟内存空间时会出现空指针异常NullPointerException

  (3) 找不到文件异常(FileNotFoundException)。

 

2、为什么需要异常处理机制?

在没有异常处理的语言中,就必须使用ifswitch等语句,配合所想到的错误状况来捕获程序里所有可能发生的错误,但为了捕捉这些错误,编写出来的程序代码经常有很多的if语句,有时候这样也未必捕捉到所有的错误,而且这样做势必导致程序运行效率的降低。

Java的异常处理机制恰好改进了这一点,它具有使用、 可自行定义异常类,处理抛出的异常处理机制同时不会降低程序运行的速度等优点。因而在Java程序设计时,应充分地利用Java的异常处理机制,以增进程序的稳定性和效率。

3Java语言中如何进行异常处理机制的?

1)异常处理是由trycatchfinally三个关键字所组成的程序块

1try程序块若是有异常发生时,程序的运行便中断,并抛出“异常类所产生的对象”。

2)抛出的对象如果属于catch()括号内欲捕获的异常类,则catch会捕捉此异常,然后进行到catch的块里继续运行。

3)无论try程序块是否有捕捉到异常,或者捕捉到的异常是否与catch()括号里的异常相同,最后一定会运行finally块里的程序代码。

 

注意:finally块是可以省略的。如果省略了finally块不写,则在catch()块运行结束后,程序跳到trycatch块后继续执行。

 

2)抛出异常

(1)程序中抛出异常:throw 异常类实例对象;

(2)指定方法抛出异常:方法名称(参数......throws 异常类1,异常类

 

4、自定义异常

为了各种异常,Java 可通过继承的方式编写自己的异常类。因为所有可处理的异

常类均继承自 Exception 类,所以自定义异常类也必须继承这个类。 

编写自定义异常:

class 异常名称 extends Exception

{

… …


面试题

1、运行时异常与一般异常有何异同?
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能
遇到的异常,是一种常见运行错误。java 编译器要求方法必须声明抛出可能发生的非运行
时异常,但是并不要求必须声明抛出未被捕获的运行时异常。

2、error 和 exception 有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指
望程序能处理这样的情况。 exception 表示一种设计或实现问题。也就是说,它表示如果程
序运行正常,从不会发生的情况。

3、Java 中的异常处理机制的简单原理和应用。
异常是指 java 程序运行时(非编译)所发生的非正常情况或错误,与现实生活中的事件很
相似,现实生活中的事件可以包含事件发生的时间、地点、人物、情节等信息,可以用一个
对象来表示,Java 使用面向对象的方式来处理异常,它把程序中发生的每个异常也都分别
封装到一个对象来表示的,该对象中包含有异常的信息。
Java 对异常进行了分类,不同类型的异常分别用不同的 Java 类表示,所有异常的根类为
java.lang.Throwable,Throwable 下面又派生了两个子类:Error 和 Exception,Error 表示
应用程序本身无法克服和恢复的一种严重问题,程序只有死的份了,例如,说内存溢出和线
程死锁等系统问题。Exception 表示程序还能够克服和恢复的问题,其中又分为系统异常和
普通异常,系统异常是软件本身缺陷所导致的问题,也就是软件开发人员考虑不周所导致的
问题,软件使用者无法克服和恢复这种问题,但在这种问题下还可以让软件系统继续运行或
者让软件死掉,例如,数组脚本越界(ArrayIndexOutOfBoundsException),空指针异常
(NullPointerException)、类转换异常(ClassCastException);普通异常是运行环境的变
化或异常所导致的问题,是用户能够克服的问题,例如,网络断线,硬盘空间不够,发生这
样的异常后,程序不应该死掉。
java 为系统异常和普通异常提供了不同的解决方案,编译器强制普通异常必须 try..catch 处
理或用 throws 声明继续抛给上层调用方法处理,所以普通异常也称为 checked 异常,而系
统异常可以处理也可以不处理,所以,编译器不强制用 try..catch 处理或用 throws 声明,所
以系统异常也称为 unchecked 异常。
提示答题者:就按照三个级别去思考:虚拟机必须宕机的错误,程序可以死掉也可以不死掉
的错误,程序不应该死掉的错误;

4、请写出你最常见到的 5 个 runtime exception。
这道题主要考你的代码量到底多大,如果你长期写代码的,应该经常都看到过一些系统方面
的异常,你不一定真要回答出5个具体的系统异常,但你要能够说出什么是系统异常,以及
几个系统异常就可以了,当然,这些异常完全用其英文名称来写是最好的,如果实在写不出,
那就用中文吧,有总比没有强!
所谓系统异常,就是…..,它们都是 RuntimeException 的子类,在 jdk doc 中查
RuntimeException 类,就可以看到其所有的子类列表,也就是看到了所有的系统异常。我
比较有印象的系统异常有:NullPointerException、ArrayIndexOutOfBoundsException、
ClassCastException。

5、JAVA 语言如何进行异常处理,关键字:throws,throw,try,catch,finally 分
别代表什么意义?在 try 块中可以抛出异常吗?
throws 捕获并向外抛出异常
throw 抛出异常
try catch 是内部捕获异常并做自定义处理
finally 是无论是否有异常都会被处理的语句,除非在 finally 前存在被执行的
System.exit(int i)时除外

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值