Java基础之006-异常

来源:互联网 发布:网络玩游戏 编辑:程序博客网 时间:2024/06/05 23:40

Java基础之006-异常

                                       35岁学习Java

 

1.1 异常的体系

throwable

     --Error

         通常出现重大问题如:运行的类不存在或者内存溢出等。
        不编写针对代码对其处理

   --Exception

        在运行时运行出现的一起情况,可以通过try catch finally

 

1.2 Exception和Error的子类名都是以父类名作为后缀。

         Java在设计异常体系时,将容易出现的情况都封装成了对象。


1.3 Throwable中的方法

1)      getMessage()

获取异常信息,返回字符串。

2)      toString()

获取异常类名和异常信息,返回字符串。

3)      printStackTrace()

获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。

4)      printStackTrace(PrintStream s)

通常用该方法将异常内容保存在日志文件中,以便查阅。

 

1.4 throws和throw

1)     throws用于标识函数暴露出的异常。

2)     throw用于抛出异常对象。

3)     throws与throw的区别:

thorws用在函数上,后面跟异常类名。

throw用在函数内,后面跟异常对象。

     说明:定义功能方法时,需要把出现的问题暴露出来让调用者去处理。那么就通过throws在函数上标识。

在功能方法内部出现某种情况,程序不能继续运行,需要进行跳转时,就用throw把异常对象抛出。

 

1.5 异常处理

try

{

         需要检测的代码;

}

catch(异常类 变量)

{

         异常处理代码;

}

finally

{

         一定会执行的代码;     

}

Finally代码块只有一种情况不会被执行。就是在之前执行了System.exit(0)。

 

处理过程:

         中检测到异常会将异常对象传递给catch,catch捕获到异常进行处理。

         Finally里通常用来关闭资源。比如:数据库资源,IO资源等。

         需要注意:try是一个独立的代码块,在其中定义的变量只在该变量块中有效。

         如果在try以外继续使用,需要在try建立引用。在try对其进行初始化。IO,Socket就会遇到。

 

1.6 自定义异常

1)     自定义类继承Exception或者其子类。

2)     通过构造函数定义异常信息。

例:

Class DemoException extendsException

{

         DemoException(Stringmessage)

         {

              super(message);

         }

}

3)     通过throw将自定义异常抛出。

 

1.7 异常细节

1)     RuntimeException以及其子类如果在函数中被throw抛出,可以不用在函数上声明。

2)     一个方法被覆盖时,覆盖它的方法必须抛出相同的异常或异常的子类。

3)     如果父类抛出多个异常,那么重写(覆盖)方法必须抛出那些异常的一个子集,不能抛出新的异常。

4)     简单说:子类覆盖父类只能抛出父类的异常或者子类或者子集。

注意:如果父类的方法没有抛出异常,那么子类覆盖时绝对不能抛,就只能try.