黑马程序员——java基础之异常

来源:互联网 发布:淘宝店主寄语 文艺 编辑:程序博客网 时间:2024/06/05 23:05

  ------- android培训、java培训、期待与您交流! ----------

1 基本概念简介

异常,就是程序在运行过程中出现不正常情况,而异常就是java对这些不正常的情况进行描述的对象的体现。

异常有两种:

a 编译时检测异常:该类异常在编译时如果没有处理,编译失败。该异常被标识,表示可以被处理。

b 运行时异常:该类异常在编译时不需要处理,编译器不检查该类异常。如果出现该类异常,建议不作处理,直接停止程序,然后修正相关代码。

小注:return 和 throw是程序结束的标志。

异常的由来:问题也是现实生活中的事物,也可以通过java的形式进行描述并封装成对象。

问题的划分:严重的问题,java用error来进行描述;而对于那些非严重的问题,java就通过异常来进行描述。

问题的处理方法:error:一般不编写针对性的代码进行处理;而异常可以使用针对性的处理方式进行处理。

Error 和Exception的共性内容:不正常情况引发的原因等;

2 异常体系

throwable

|—Error

|—Exception

      |—RuntimeException

      ...

异常体系的特点:异常体系中的所有类以及建立的对象都具备可抛性,也就是说可以被throw和throws关键字所操作,而且只有异常体系具备该特点。

throw和throws的用法:throw定义在函数内,用于抛出异常对象;throws定义在函数上,用于抛出异常类,并且可以抛出多个,中间用逗号隔开

异常的优点:将问题进行封装;将正常的流程代码和问题处理代码相分离,便于阅读。

3 异常的使用

使用异常时,应注意如下几点:

a 声明异常时,建议声明更为具体的异常,这样处理也可以更具体;

b 声明了几个异常就要有对应个数的catch(){ }语句进行处理,但不要定义多余的catch代码块,否则容易导致多个catch的异常出现继承关系,则该函数就结束了;

c 函数中有异常发生,

d 在进行catch处理时,catch中一定要定义具体的处理方式,可以使用异常日志文件记录相关的异常信息,便于以后的维护

小注:在子父类覆盖时:子类抛出的异常必须是父类的异常的子类或者子集;如果父类或者接口没有异常抛出时,子类覆盖出现异常,只能try不能抛。

异常处理语句:

try {需要被检测的测试代码 }catch(异常类型 变量名){ 处理异常的代码 } finally{ 一定会执行的语句 }

try {} catch(){}

try{} catch(){} catch(){} catch(){} catch()){}...

try{}  finally{}

小注:finally中定义的通常是:关闭资源代码,如进行数据库操作时,完成相关的功能后就需要释放相关的资源;只有执行到System.exit(0);时,系统退出,JVM结束,此时finally中的语句不会执行。

示例:

class ExcpMethod
{
int div(int a,int b)throws Exception//通过throws的关键字声明了该功能有可能会出现问题。
{
return a/b;
}
}
class  ExcepTest
{
public static void main(String[] args) //throws Exception
{
ExcpMethod exm= new ExcpMethod();//建立实例对象
try//执行代码块
{
int x = exm.div(4,0);
System.out.println("x="+x);
}
catch (Exception e)//异常处理
{
System.out.println(e.toString());
}
System.out.println("It is over");

}
}

自定义异常:定义类继承Exception 或 RuntimeException

目的:为了让自定义类具有可抛性;让该类具备操作异常的共性方法

如:

class MyException extends Exception

{

MyException(String message)

{

super(message);//调用父类的方法

}