java 异常,java,异常

1.异常:

 a概念.程序运行过程中出现的非正常情况。

 b异常处理的必要性:所有的程序都存在一些未知的问题或是错误,如果这些问题不进行处理,可能会给用户造成一定的损失。

 c.异常处理:程序中一旦有异常发生,则会执行提前准备好的一段代码,减少损失,不会中断程序。

2.分类
所有异常的父类:Throwable 位于java.lang包下
       常用的方法有public string getMessage(); 返回String类型的异常信息
                            public void printStackTrace();打印跟踪方法调用栈中异常处理信息
(1).Throwable有两个子类:Error和Exception

    Error :仅靠程序无法恢复的严重错误,例如:内存不足,(java虚拟机调用方法时)栈溢出
              大多数的Error错误是程序无法处理的。
    Exception:有分为两个子类 RuntimeException和非RuntimeException
a.RuntimeException(运行时异常,未检查异常);它的本类加所有子类都是运行时异常
             特点:java编辑器编译时不是检测此类异常,在运行时报错

             常见的运行时异常有:

              下标越界异常:java.lang.ArrayIndexOutOfBoundException;

               类型转换异常:java.lang.classCastException.

               空指针异常:java.lang.NullPointerException  (null.+属性/方法引起的)

数字格式转换异常: java.lang.NumberFormalException  (string->int/interger时要求的纯数字)

           

                            

        b.非RuntimeException(非运行时异常,及已检查异常)

          和RuntimeException没有继承关系的异常类,称为非运行时异常

           特点:java编辑器在编译时报错,出现这类异常时编译不通过根本到不了运行这一步,比需处理


3.异常的产生

(1)自动产生异常;程序在运行的过程中,遇到错误的代码,程序自动产生异常,程序因此而终止。

                            

  (2)手动产生异常

       语法:throw new 异常类名(“实参”);

        要求;比需写在方法内

         作用;等价于return ,导致程序的终止

          int i=1;

          if(i==1){

            throw new RuntimeException(e);      

           }

 4.传递;异常的传递按方法的调用链,相反的方向进行传递,直到传给JVM虚拟机,导致程序终止。

5.异常的处理

   1.消极处理 throws(声明的异常) 定义方法声明的后面

       .返回值类型 方法名 (形参列表)throws 异常类名,异常类名1{}

        .结果:使用消极异常处理只是把异常消极传递,推卸责任,最终程序无法运行终止,唯一的优势:可以使非运                行      是异常编译通过。

   2.积极处理异常:

      语法:try{}

                catch(){}

       注意:

             try后边可以跟多个catch块,一旦有异常产生会从第一个catch块,依次匹配

             catch可以利用多态使用父类型处理异常:本类型+所有子类型异常

            父类的catch块必须定义在其子类的catch块后边

             catch只能捕获try中可能出现的非运行时异常

             catch中可以捕获任意的运行时异常(不管try中是否具有出现的可能性)

             积极处理异常的同时可以采用消极处理异常

   finally:不管有没有异常的产生,一定被执行

          try{}catch(){} finally{一定被执行的}

           因此finally中的语句,不管有没有异常的产生,一定执行

                 所以在finally 中一般不写return 语句

6.自定义异常

      (1)自定义异常类需要继承Exception类或者是Exception的子类,如过自定义异常类想成为运行时异常,需要继承RuntimeException或是RuntimeException 的子类

      (2)提供两个构造方法

              无参构造方法

              提供带有String 参数的构造方法 ,利用super(message)传递参数。

     

         

 

                       


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章