异常
1.异常的概念
程序中出现的错误
2.异常的分类
编译时异常:语法错误,不能通过编译(eclipse直接以红线的形式提示)
程序运行异常:语法没有错误,而运行时违反了java程序的规范而导致程序终止
×××异常,通常意义上指的都是 程序运行异常××× 程序运行异常又可分为: *系统异常:违反了Java已经定义好的一些规范,如数组下标越界,除数为0等 *自定义异常:违反了程序员自己定义的一些规范,如年龄只能在0-100,性别只能为男或女等。
3.异常出现的状态(程序运行异常):
程序终止,并在控制台显示错误的详细描述信息
4.处理异常的目的:
当出现异常时 能继续运行程序而不终止,并且控制台显示的方式换成自定义的形式
5.异常处理的一般模式:
try catch Exception finally
a.try :用来监视有可能出现异常的代码块。当出现异常时将异常抛出到catch
b.catch:当出现异常时,负责处理异常的代码块,try中一旦有异常会自动跳转到这里 d.Exception类:异常也是对象,都属于Exception类,抛出到catch块中的就是个异常对象。 使用异常对象来获得异常信息。
c.finally:无论是否有异常,都会执行的代码
6.多重try catch语句
a.运行时异常的常见种类:
数组下标越界 :java.lang.ArrayIndexOutOfBoundsException
除数为0 :java.lang.ArithmeticException
空指针异常:java.lang.NullPointExcpeiton
输入格式错误:java.util.InputMismatchException ......
外部资源访问异常: SQLExcpetion IOException ClassNotFoundException FileNotFoundException
b.异常的继承体系:
见图片文件。 系统异常又可分为运行时异常与资源访问异常(文件操作,数据库读取等)
c.多重catch语句:
当一段代码中可能出现多种类型异常时,可以接上多个catch块分别处理不同类型的异常。系统会自动选择最适合的catch块来处理异常。 可以处理多种异常,但每次只会处理一个。 一般在最后加上处理Exception类型的异常表示其他未知错误。
d.try catch 嵌套使用
7.自定义异常的处理
a.自定义异常类,继承与Exception,在构造函数中使用super(String)向父类传递一个表示异常信息的字符串。
b.抛出自定义异常对象的方式:throw new XXXException().
c.处理自定义异常的方式:catch 等同与处理系统异常。
8.throws关键字
a.作用:在Java中允许在一个函数内,如果有异常函数内部不处理而使用throws关键字表示该函数会抛出的异常类型。这些异常将交给调用该函数的其他函数负责处理
b.其他函数调用时则必须处理 或者可以使用throws继续向上层调用者抛出。
c.所有继承与RunTimeException的异常不可用throws抛出,在函数内部必须处理。