第五章 异常以及代码Test

skywang12345-  

Java异常(一) Java异常简介及其架构

          https://www.cnblogs.com/skywang12345/p/3544168.html

Java异常(二) 《Effective Java》中关于异常处理的几条建议

         https://www.cnblogs.com/skywang12345/p/3544287.html

Java异常(三) 《Java Puzzles》中关于异常的几个谜题

         https://www.cnblogs.com/skywang12345/p/3544353.html

Java程序在执行过程中所发生的异常事件可分为两类:

Error:  Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重情况。一般不编写针对性的代码进行处理。

Exception: 其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。

Exception又分为两种:

unckecked异常:即RuntimeException,运行时异常。

           例如:ClassCastException  类型转换异常

                      ArrayIndexOutOfBoundsException  数组越界异常

                      NullPointerException 空指针异常

                      ArithmeticException 计算异常

。。。

checked异常:编译时异常。

               例如:java.lang.ClassNotFoundException

                          java.lang.InterruptedException

                          java.io.FileNotFoundException

                          java.sql.SQLException

。。。

 

代码演示:


/*
*java.lang.ArithmeticException: / by zero
*/ 
public void NullPointerExceptionTest () {
        try {
            System.out.println(1/0);
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }

异常处理方式:

(1)throws方法头部抛出异常;

(2)throw在方法内部抛出异常;

(3)通过try-catch-finally

无论是throws还是throw,都是向上抛出,如果上级调用仍未处理则继续抛出,直到被try/catch捕获处理位置。

而try-catch-finally,要求catch根据具体的异常捕获最好,finally最终都会被处理,通常是用来释放资源用的。

第一种方式--throws方法头部抛出异常:

/**
 * @author yto_yh
 *
 */
public class TestException090501 {
    
    //try catch
    public void NullPointerExceptionTest () {
        try {
            System.out.println(1/0);
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }
    // throws Exception
    public void NullPointerExceptionTest01 () 
        throws Exception{
            System.out.println(1/0);
    }
    
    public void NullPointerExceptionTest02 () throws Exception {
        int age = 0;
        age = -100;
        if(age<0)
        {
            ArithmeticException e = new ArithmeticException();//创建异常对象
            throw e;//抛出异常
        }
        System.out.println(age);

    }
    
    
    public static void main(String[] args) {
        TestException090501 t=new TestException090501();
         try {
            t.NullPointerExceptionTest02();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
}

 

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