欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第五章 异常以及代码Test

程序员文章站 2024-03-02 22:55:46
...

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

。。。

第五章 异常以及代码Test

 

代码演示:


/*
*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();
        }
    }
    
}