黑马程序员----------异常

来源:互联网 发布:湖人火箭7场大战数据 编辑:程序博客网 时间:2024/05/19 05:34

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、异常的概述
  程序运行过程中的不正常现象就叫异常。导致程序运行不正常的现象有很多,所以,就有很多的异常对象。而这些异常对象存在着共性的内容,所以,可以不断的进行抽取。最终形成了异常的体系结构。
  
  Throwable是所有异常的超类,它有两个直接子类,Error类和Excetion类。只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Java throw 语句抛出。类似地,只有此类或其子类之一才可以是 catch 子句中的参数类型。
   1.Error类  Error类代表的是非常严重的异常,程序不该捕获它,应该直接修改程序。
   2.Exception  该类中的异常是大多可以针对性处理的。常见子类RuntimrException和IOException。通常子类名的后缀名都是父类名。这个异常体系的最大特点:该体系中的类和对象都具备可抛性。jvm默认异常处理方式就是将收到的异常名字,信息,位置,都打印在控制台上,结束程序。Throwable中的方法。Exception中没有特有方法,都是继承Throwable中的方法。
      String getMessage():获取异常信息。
      String toString():覆写Object中,打印名称,信息。
      void printStackTrace():打印异常的信息,名称,位置。
二、异常的处理
  1.声明抛出  告诉调用者,这个方法可能会出异常,如果要调用这个方法,就必须对这个异常进行处理。一般通过throws将可能发生的异常声明。
   void demo() throws Exception{
   }
  2.对异常进行捕捉  使用try来执行一段可能出现异常的代码,使用catch来捕捉一个异常,然后执行处理代码。可以插入多个catch来捕捉各个异常,多个catch,父类的catch放到最下面。
  

try{int []x = new int[0];int y = x[0];}catch(Exception e){System.out.println("出错了");}finnally{}


三、自定义异常
  自定义异常:是按照java的面向对象思想,将程序中出现的特有问题进行封装自定义异常的好处:
   1.将问题进行封装,
   2.将正常流程代码和问题代码相分离,方便于阅读。
  通过继承一个异常类,我们可以实现自定义异常。

class MyException extends Exception{public MyException( String s ){super(s);}}class Demo2{public static void main(){try{aaa();}catch(MyException e){System.out.println(e.toString());}}static void aaa() throws MyException {throw new MyException("出错啦");}}

自定义异常:是按照java的面向对象思想,将程序中出现的特有问题进行封装自定义异常的好处:
   1.将问题进行封装,
   2.将正常流程代码和问题代码相分离,方便于阅读。  
四、补充
   1.finally finally里是指一定会被执行的代码,他的代码执行在try和catch里的return之前,在finally里调用不安全的方法,也需要进行对异常的处理。finally中如果有return,他会先于try中的return执行。
   和fannly容易混淆的有final和finally。
    final是一个修饰词,修饰变量代表只能被赋值一次,修饰方法,则这个方法不可以被重写,修饰在类上,则这个类无法被继承。
    finalize是一个方法名,Java技术使用finalize()方法在垃圾收集器将对象从内存中清除出去前,做必要的清理工作。 
   2.RuntimeException() 该类异常,函数中可以不声明,不写抛出语句,调用者也可以不做处理,出现该类异常,表示程序无法继续运算。
   3.异常在子类复写父类方法时,子类方法只能抛出父类声明的异常或这些异常的子类,如果父类方法没有抛出异常,则子类方法遇到异常只能try并处理。
   4.throws和throw的区别  throws写在函数上,方法名之后,后面跟异常类名。而throw写在函数内,后面跟着异常对象。

0 0
原创粉丝点击