java—基础—异常、

旧时模样 提交于 2019-12-03 00:09:35

一、异常

Java异常处理的五个关键字:try、catch、finally、throw、throws

1.抛出异常throw

/*
1.throw用在方法内,用来抛出一个异常对象,将这个异常对象传递到调用者处,并结束当前方法的执行。
2.使用格式:throw new 异常类名(参数);
例:throw new ArrayIndexOutOfBoundsException("该索引在数组中不存在,已超出范围");
*/

2.声明异常throws

/*
1.声明异常:将问题标识出来,报告给调用者。如果方法内通过throw抛出了编译时异常,而没有捕获处理(稍后讲
解该方式),那么必须通过throws进行声明,让调用者去处理。
2.关键字throws运用于方法声明之上,用于表示当前方法不处理异常,而是提醒该方法的调用者来处理异常(抛出异常).
3.声明异常格式:修饰符 返回值类型 方法名(参数) throws 异常类名1,异常类名2…{   }
*/

public class Test {
    public static void main(String[] args) throws ArrayIndexOutOfBoundsException{
        int[] arr = {1,2,3};
        Test(arr,3);
    }

    public static void Test (int[] arr,int index) throws ArrayIndexOutOfBoundsException{
        if (index<0 || index>arr.length-1){
            throw new ArrayIndexOutOfBoundsException("越界异常");
        }else {
            System.out.println(arr[index]);
        }
    }
}

3.捕获异常try…catch

/*
try{
     编写可能会出现异常的代码
}catch(异常类型  e){
     处理异常的代码
     //记录日志/打印异常信息/继续抛出异常
}
*/

4.finally 代码块(无论是否异常都会执行,与try catch一起使用)

注:如果finally有return语句,永远返回finally中的结果,避免该情况.

public class Main {
    public static void main(String[] args) {
        int[] arr = {1,2,3};
        try {
            Test(arr,2);
        }catch (Exception e){
            System.out.println(e);
        }finally {
            System.out.println("无论是否异常都执行");
        }
    }


    public static void Test (int[] arr,int index){
        if (index<0 || index>arr.length-1){
            throw new ArrayIndexOutOfBoundsException("越界异常");
        }else {
            System.out.println(arr[index]);
        }
    }
}

4.多异常的捕获

/*

方式1(常用方式:使用一次捕获多次处理方式):
try{
     编写可能会出现异常的代码
}catch(异常类型A  e){  当try中出现A类型异常,就用该catch来捕获.
     处理异常的代码
     //记录日志/打印异常信息/继续抛出异常
}catch(异常类型B  e){  当try中出现B类型异常,就用该catch来捕获.
     处理异常的代码
     //记录日志/打印异常信息/继续抛出异常
}


方式2:多个异常一次捕获一次处理   :用Exception

方式3:多个异常分别处理。:分别使用try catch
*/

5.异常打印

public String getMessage() :获取异常的描述信息,原因(提示给用户的时候,就提示错误原因。
public String toString() :获取异常的类型和异常描述信息(不用)。
public void printStackTrace() :打印异常的跟踪栈信息并输出到控制台。


    public static void main(String[] args) {
        int[] arr = {1,2,3};
        try {
            Test(arr,3);
        }catch (Exception e){
            System.out.println(e.toString());
        }
    }

6.子父类异常

1.子类重写父类方法的时候,父类异常什么样,子类异常就什么样,子类方法throws抛出的异常必须等于或者继承与父类、

7.自定义异常类

/*
异常类如何定义:
1. 自定义一个编译期异常: 自定义类 并继承于 java.lang.Exception 。
2. 自定义一个运行时期的异常类:自定义类 并继承于 java.lang.RuntimeException 。
*/

例:自定义异常类
public class customException extends Exception {
    public customException(){
        super();
    }
    public customException(String message){
        super(message);
    }
}


调用:
public class Main {
    public static void main(String[] args) {
        test();
    }
    public static void test(){
        try {
            throw new customException("异常啦");
        } catch (customException e) {
            e.printStackTrace();
        }
    }
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!