throw 关键词

本文介绍了Java中的`throw`关键字用于抛出异常,包括其使用格式、注意事项以及如何处理异常。同时讲解了`Objects`类中的`requireNonNull`方法,用于检查对象是否为`null`并抛出`NullPointerException`。此外,还概述了异常处理的其他方式,如`try...catch`块和`finally`关键字的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

throw 关键词
作用:可以使用throw关键字在指定的方法中抛出指定的异常
使用格式:throw new XXXException(“异常产生的原因”);
注意:1、throw 关键字必须写在方法内部
2、throw关键字后面new的对象必须是Exception或者时Exception的子类对象
3、throw关键字抛出指定的异常对象我们就必须处理这个对象
throw关键字后面创键的是RuntiamException或者是RuntaimException的子类对象,我们可以不用处理,默认交给JVM处理
(打印异常对象,中断程序)
throw关键字后面创建的是编译异常(写代码时报错,我们就必须处理这个异常,要么throw,要么try…catch)

public class demoException {
    public static void main(String[] args) {
        int [] arr=null;
        int a=getElement(arr,0);
        System.out.println(a);
    }
    /*定义一个方法,获取数组指定索引的元素
    参数;interesting【】 arr ,int index
    以后工作中我们必须对方法传递过来的参数进行合法校验
    如果参数不合法,那么我们就必须使用抛出的异常方方式告知方法的调用者,传递的参数有问题*/
    public static int getElement(int[] arr,int index){
        if (arr==null){
            throw new NullPointerException("传递的数组的值是null");
        }
        int ele=arr[index];
        return  ele;
    }
}

Objects类中的静态方法判断非空

Objects类中的静态方法判断非空
public static requireNoNull(T obj):查看指定引用是不是null
源码:public static T requireNoNull(T obj){
if(obj==null)
throw new NullPointerException();*
return obj;
}

public class demo02 {
    public static void main(String[] args) {
        method(null);
    }
    public static void method(Object obj){
        Objects.requireNonNull(obj,"传递的对象是null");
    }
}

throw关键字:异常处理的第一种方式

hrow关键字:异常处理的第一种方式,交给别人处理
作用:当方法内部抛出异常对象的时候,那么我们就必须处理这个异常对象
可以使用throw关键字处理异常对象,会把异常对象声明抛给方法的调用处理者(自己不处理,给别人处理),最终交给JVM
处理–>中断处理。
使用格式:在声明是使用
修饰符 返回值类型 方法名(参数列表) throw AAAException,BBBException…{
throw new AAAException(“产生原因”)
throw new BBBException(“产生原因”)
。。。
}
注意:1、throw关键字必须写在方法申明处
2、throw关键字后面的异常必须是Exception或者是exception的子类
3、方法内部如果抛出了多个异常对象,那么throw后面也必须申明多个异常即可
如果抛出了多个异常对象是父子类关系,那么我们可以直接声明父类异常即可
4、调用一个声明抛出异常的方法,我们就必须的处理声明的异常,要么继续使用
throw声明抛出,交给方法调用者处理,最终交给JVM
要么try…catch自己处理异常

public class demoThrow {
    public static void main(String[] args) throws FileNotFoundException,IOException{
        readFile("C:\\a.txt");
    }
    /*定义一个方法,对传递的文件路径进行合法性判断
    如果路径不是C:\a.txt那么我们就要抛出文件找不到异常对象
    告知调用者
    注意:FileNotFoundException是编译异常,抛出异常就必须处理这个异常
    可以使用throw继续声明抛出FileNotFoundException,让方法调用者处理*/
    public static void readFile(String filename) throws FileNotFoundException,IOException{
        if (!filename.equals("c:\\a.txt")){
            throw new FileNotFoundException("传递的文件路径不是C:\\a.txt");
        }/*如果传递路径不是。txt结尾
        那么我们就抛出IO异常对象,告知方法调用者,文件后缀名不对*/
        if (!filename.endsWith(".txt")){
            throw new IOException("文件的后缀名不对");
        }
        System.out.println("路径没有问题,读取文件");
    }
}

捕获异常try…catch

try…catch:异常处理的第二种方式,自己处理异常
格式:try{
可能产生的异常
}catch(定义一个异常变量,用来接收try中抛出的异常对象){
异常处理的逻辑异常对象之后怎么处理异常对象
一般在工作种,会把异常的信息记录到一个日志中
}

catch(异常类名 变量名){//catch可以有多个
。。。。
}
注意:1、try中可能会抛出对个异常对象,那么就可以使用多个catch来处理这些异常对象
2、如果try中产生了异常,那么就会执行catch中的异常处理逻辑,执行完毕catch中的处理逻辑
继续执行try…catch之后的代码
如果try…catch中没有产生异常,那么就不会执行catch中异常的处理逻辑,执行完try中的代码,
继续执行try…catch之后的菜吗

import java.io.IOException;
public class demo02Exception {
    public static void main(String[] args) {
        try{//可能产生的异常
            readFile("c:\\a.txt");
        }catch(IOException e){//try中抛出什么异常,catch就定义什么异常变量用来接收这个异常对象
            //异常处理逻辑,异常对象之后怎么处理异常对象
            System.out.println("catch-传递的文件后缀不是。txt");
        }
        System.out.println("后续代码");
    }
    public static void readFile(String fileName)throws IOException {
        if (!fileName.endsWith(".txt")){
            throw new IOException("文件的后缀名不对");
        }
        System.out.println("路径没有问题,读取文件");
    }
}

Throwable 类中定义了三个异常处理的方法
String getMessage()返回此throwable的简短miaosh
String toString()返回throwable的详细消息字符串
void printStackTrace()JVM打印异常对象,默认此方法,打印的异常信息最全面

try{//可能产生的异常
            readFile("c:\\a.txt");
        }catch(IOException e){//try中抛出什么异常,catch就定义什么异常变量用来接收这个异常对象
            //异常处理逻辑,异常对象之后怎么处理异常对象
            System.out.println("catch-传递的文件后缀不是。txt");
            e.getMessage();//String getMessage()返回此throwable的简短miaosh
            e.toString();// String toString()返回throwable的详细消息字符串
            e.printStackTrace();//  void printStackTrace()JVM打印异常对象,默认此方法,打印的异常信息最全面
        }

finally关键字使用方法

finally只能使用在和try一起使用,无论有没有异常它都会执行

 try{//可能产生的异常
            readFile("c:\\a.txt");
        }catch(IOException e){//try中抛出什么异常,catch就定义什么异常变量用来接收这个异常对象
            //异常处理逻辑,异常对象之后怎么处理异常对象
            System.out.println("catch-传递的文件后缀不是。txt");
        }finally {//无论是否出现异常这个代码块都会执行
            System.out.println("资源释放");
        }

finally避免写return语句,因为得出的只会只是return值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值