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

来源:互联网 发布:c数值算法 编辑:程序博客网 时间:2024/05/17 21:48

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

异常

异常就是程序在运行时出现的不正常情况。

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

其实就是java对不正常情况进行描述后的对象体现。

 

对于问题的而划分,有两种:①严重的问题。②非严重的问题。

对于严重的:java通过Error类进行描述。对于Error一般不编写针对性的代码处理。

对于非严重的:java通过Exception类进行描述。对于Exception可以使用针对性的处理方式进行处理。

如果在函数上声明异常

便于提高安全性,让调用者进行处理,不处理编译失败。

Throwable

|--Error

|--Exception

异常的处理, java提供了特有的语句:

try 

 需要被检测的代码

   }

 catch(异常类 变量)

 {  

处理异常的代码;(处理方式)

 }

 finally {  

一定会执行的语句; }


一个标准的异常处理例子:
package zrl;import java.io.*;import java.io.IOException;/* * 标准的io异常处理 */public class File {public void fileread() throws IOException{FileReader fir = new FileReader("fi.txt");char[] ch = new char[1024];int num = 0;while((num=fir.read(ch))!=-1){System.out.println(new String(ch,0,num));}fir.close();}public static void main(String[] args) throws IOException {FileWriter fi = null;try{fi = new FileWriter("fi.txt");fi.write("1123");}catch(IOException e){System.out.println(e.toString());}finally{try{if(fi != null);fi.close();}catch(IOException e){System.out.println(e.toString());}}File f = new File();f.fileread();}}


对捕获到的异常对象进行常见的方法操作。

String getMessage():异常信息 

String toString():异常名称:异常信息。

void printStackTrace():异常名称,异常信息,异常出现的位置。

 

对多异常的处理

函数中,只要有一个异常发生,这个函数就会终止。

   1.声明异常时,建议声明更为具体的异常,这样处理的可以更具体。

   2.对方声明几个异常就对应有几个catch块。不要定义多余的catch块。

     如果多个catch块中的异常出现继承关系,父类异常catch块放在最下面。

建议在进行catch处理时,,catch中一定要定义具体处理方式。不要简单定义一局e.printStackTrace(),也不要简单的就书写一条输出语句。


如何定义异常信息呢?

因为父类已经把异常信息的操作都完成了。

所以子类只要在构造时,将异常传递给父类通过super语句。

那么就可以直接通过getMessage方法获取自定义的异常信息。

 

自定义异常:

必须是自定义类继承Exception。还可以继承Throwable

但是Throwable已经有两个派系了 我们只要继承Exception就行了。

 

继承Exception原因:

异常体系有一个特点:因为异常类和异常对象都需要被抛出。

他们都具备可抛性。这个可抛性只有Throwable这个体系中的独有特点。

只有这个体系中的类和对象才可以被throwsthrow操作。


throwsthrow的区别:

throws使用在函数上。throw使用在函数内。

throws后面跟的异常类,可以跟多个,用逗号隔开。throw后跟的是异常对象。

异常有两种:

      编译时被检测异常。

      运行时异常(编译时不检测) 

异常的好处:

        1.将问题进行封装。

        2.将正常流程代码和问题处理代码相分离,方便与阅读。

异常的处理原则:

         1.处理方式有2种。:try或者throws

         2.调用到抛出异常的功能时,抛出几个,就处理几个。 一个try对应多个catch的情况。

         3.多个catch,父类的catch放到最下面。

         4.catch内,需要定义针对性的处理方式。


0 0
原创粉丝点击