关于异常的捕获与异常的抛出的详细例子

一,异常的捕获

语法如下:

try{
//程序代码块
}
catch(Exceptiontype1 e){
}
catch(Exceptiontype2 e){
}
...
finally{
}

catch关键字后面括号中的Exception类型的参数e.Exception就是try代码块传递给catch代码块的变量类型,e就是变量名。如catch代码块中的语句e.getMessage();

1.getMessage()函数:获得异常的性质。

2.toString()函数:给出异常的类型和性质。

3.printStackTrace()函数:指出异常的类型,性质,栈层次及出现在程序中的位置。


在完整的异常处理语句一定要包含finally语句,不管程序有无异常发生,并且不管try-catch之间的语句是否顺利执行完毕,都会执行finally语句。除了以下4种特殊情况:

1.在finally语句块中发生了异常;2.在前面的代码中用了System.exit()退出程序;3.程序所在的线程死亡;4.关闭了CPU


例子1:捕获单个异常:捕获加载空异常时发生的异常

package com.lixiyu;
public class CatchException {
public static void main(String[] args){
    try{
        System.out.println("进入try语句块");
        Class<?>clazz=Class.forName(""); //得到一个空的Class对象
        System.out.println("离开try语句块");
            }catch(ClassNotFoundException e){
                System.out.println("进入catch语句块");
                e.printStackTrace();
                System.out.println("离开catch语句块");
            }finally{
                System.out.println("进入finally语句块");
            }
}


例子2:捕获多个异常:对加载数据库驱动和创建数据库连接时所发生的异常分别进行捕获

package com.lixiyu;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class CatchExceptionOne {
    private static String URL=
            "jdbc:mysql://localhost:3306/db_database";
    private static String DRIVER="com.mysql.jdbc.Driver";
    private static String USERNAME="mr";
    private static String PASSWORD="mingri";
    private static Connection conn;
    public static Connection getConnection(){
        try{
            Class.forName(DRIVER);//加载驱动程序
            conn=DriverManager.getConnection(URL,USERNAME,PASSWORD);//建立连接
            return conn;
        }catch(ClassNotFoundException e){//捕获类为发现异常
            e.printStackTrace();
        }catch (SQLException e) {// 捕获SQL异常
            e.printStackTrace();
        }
        return null;
    }
public static void main(String[] args){
    CatchExceptionOne.getConnection();
}
}


二,异常的抛出

1.使用throws声明抛出异常

package com.lixiyu;
public class Shoot {
static void pop() throws NegativeArraySizeException{//定义方法并抛出NegativeArraySizeException异常
    int[]arr=new int[-3];
}
public static void main(String[] args){
    try{
        pop();
    }catch(NegativeArraySizeException e){
        System.out.println("pop()方法抛出的异常");
    }
}
}


2.使用throw语句抛出异常

package com.lixiyu;
public class UseThrow {
    final static double PI=3.14;
    public void computerArea(double r)throws Exception{
    if(r<=0.0){
        throw new Exception("程序异常:\n半径"+r+"不大于0.");//使用throw语句抛出异常
    }else{
        double circleArea=PI*r*r;
        System.out.println("半径是"+r+"的圆面积是:"+circleArea);
    }
    }
    public static void main(String[] args){
        UseThrow ut=new UseThrow();
        try{
            ut.computerArea(-200);
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
    }
}


你可能感兴趣的:(关键字,程序,异常捕获,异常抛出)