Java中throw和throws

深入解析 Java 中的 throw 和 throws:异常处理机制的核心 throw用于抛出一个异常对象,表示程序在某个地方遇到了问题,需要中断当前流程并将异常传递出去。throws用于方法声明中,表示该方法可能会抛出某种类型的异常,提醒调用者处理这些异常。throw和throws通常结合使用,throws在方法签名中声明异常,throw在方法内部抛出具体的异常。正确理解和使用throw和throws关键字,可以帮助程序员更好地控制程序的异常流和错误处理,提升程序的稳定性和可维护性。 阅读详情

这两天在写JAVA代码的时候发现一些函数的在定义的时候后面要加上throws xxx。。一段,不太明白什么意思,上网搜了一下,自己又试了试,大致明白了它的作用。

================理论知识===================

系统自动抛出的异常
所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,并且 Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行。

语句抛出的异常
用户程序自定义的异常和应用程序特定的异常,必须借助于 throws 和 throw 语句来定义抛出异常。


throw是语句抛出一个异常。
语法:throw (异常对象);
         throw e;

throws是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常)
语法:[(修饰符)](返回值类型)(方法名)([参数列表])[throws(异常类)]{......}
            public void doA(int a) throws Exception1,Exception3{......}

举例:

throws E1,E2,E3只是告诉程序这个方法可能会抛出这些异常,方法的调用者可能要处理这些异常,而这些异常E1,E2,E3可能是该函数体产生的。
throw则是明确了这个地方要抛出这个异常。

如: void doA(int a) throws Exception1,Exception3{
           try{
                 ......

           }catch(Exception1 e){
              throw e;
           }catch(Exception2 e){
              System.out.println("出错了!");
           }
           if(a!=b)
              throw new  Exception3("自定义异常");
}


代码块中可能会产生3个异常, (Exception1,Exception2,Exception3)。
如果产生Exception1异常,则捕获之后再抛出,由该方法的调用者去处理。
如 果产生Exception2异常,则该方法自己处理了(即System.out.println("出错了!");)。所以该方法就不会再向外抛出Exception2异常了,void doA() throws Exception1,Exception3 里面的Exception2也就不用写了。
而Exception3异常是该方法的某段逻辑出错,程序员自己做了处理,在该段逻辑错误的情况下抛出异常Exception3,则该方法的调用者也要处理此异常。

throw语句用在方法体内,表示抛出异常,由方法体内的语句处理。
throws语句用在方法声明后面,表示再抛出异常,由该方法的调用者来处理。

throws主要是声明这个方法会抛出这种类型的异常,使它的调用者知道要捕获这个异常。
throw是具体向外抛异常的动作,所以它是抛出一个异常实例。

throws说明你有那个可能,倾向。
throw的话,那就是你把那个倾向变成真实的了。

同时:
1、throws出现在方法函数头;而throw出现在函数体。
2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常。
3、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。

================测试代码===================

package com.test;
public class throwsTest {
    public static void main(String[] args) {
        try{
            func2();
            System.out.println("in main try");
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
   
    public static void func1() throws Exception
    {
        int a = 100;
        int b = 0;
        if(b == 0)
        {
           Exception e = new Exception("divided by 0");//创建异常对象
           throw e;//抛出异常
        }
        int c = a/b;
        System.out.println(c);
    }
   
    public static void func2() //throws Exception
    {
//        try{
//            func1();
//        }
//        catch(Exception e){
//            //e.printStackTrace();
//            System.out.println("in func2 catch");
//        }
        func1();
    }
}


代码中的红色部分是会报错的。在Eclipse中提示Unhandled exception type Exception。

因为func1明确指明了它可能会跑出一个Exception异常,因此在func2里你必须对其进行相应的处理,大致有两种方式:

1、把调用有可能会引发异常的函数的代码包在try-catch块里。

2、在声明func2的时候也指明throws Exception,这样就进一步告诉了外层函数,func2可能引发exception。

从零搭建IoT数据中台:STM32+WebSocket实现边缘设备与Web端实时双向通信 本文详细介绍了如何从零搭建基于STM32和WebSocket协议的IoT数据中台,实现边缘设备与Web端的实时双向通信。通过硬件选型、协议设计、服务器搭建及安全优化,提供了一套低延迟、高并发的企业级解决方案,适用于智能农业和工业监控等场景。 阅读详情

相关推荐

CAB单片机开发指南

CAB单片机开发使用指南,IDE安装及烧录注意事项

Zoebuxiangtian的博客 1558

java throw e 报错_Java基本概念:异常

一、简介描述:异常(Exception)指不期而至的各种状况,异常发生的原因有很多,通常包含以下几大类:用户输入了非法数据。要打开的文件不存在。网络通信时连接中断,或者JVM内存溢出。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。Java语言在设计的当初就考虑到这些问题,提出异常处理的框架的方案,所有的异常都可以用一个异常类来表示,不同类型的异常对应不同的子类异常(目前我们所说的异常...

weixin_34357614的博客 1229

抖音小游戏上架避坑指南:从软著申请到ICP备案全流程解析

本文详细解析了抖音小游戏上架前必须完成的软著申请和ICP备案全流程,提供了清晰的时间线规划与实操避坑指南。文章重点阐述了个人与企业备案的区别、材料准备要点以及平台审核常见问题,旨在帮助独立开发者和小团队高效、合规地完成游戏上架,避免在行政流程中延误项目。

weixin_29276847的博客 1564

Java-throw异常详解以及过程

首先,我们知道Java有3种抛出异常的形式:throw(执行的时候一定抛出某种异常对象), throws(出现异常的可能性,不一定会发生), 系统自动抛出异常。 throw用在一个语句抛出异常的时候,throw (an instance of exception class)比如一个方法/函数里,try{…}catch(Exception e){throw new ArithmeticException(“XXX”);}finally{…}; throws则是用在声明方法可能抛出异常的时候,throw

qq_39652397的博客 1万+

windows版kafka异常java.nio.file.FileSystemException另一个程序正在使用此文件,进程无法访问

环境 现象 原因 解决方法 参考

山水牧羊 3847

Sentaurus TCAD 修改字体

如题

努力学习的IC小白 5763

java异常处理之throw, throws,try和catch

    程序运行过程中可能会出现异常情况,比如被0除、对负数计算平方根等,还有可能会出现致命的错误,比如内存不足,磁盘损坏无法读取文件等,对于异常和错误情况的处理,统称为异常处理。    Java异常处理主要通过5个关键字控制:try、catch、throw、throws和finally。try的意思是试试它所包含的代码段中是否会发生异常;而catch当有异常时抓住它,并进行相应的处理,使程序不受

上善若水 13万+

【STC8A8K64S4A12开发板】—学习PWM脉冲宽度调制

版权声明:本文为博主原创文章,转载请附上原文出处链接。 文章目录前言一、硬件设计1.PWM脉冲宽度调制介绍2.STC8A8K64S4A12系列单片机PWM介绍3.PWM配置步骤二、软件设计1.PWM寄存器汇集2.寄存器解析2.1.PWM配置寄存器PWMCFG2.2.PWM控制寄存器PWMCR2.3.PWM中断标志寄存器2.4.PWM外部异常控制寄存器2.5.PWM时钟选择寄存器2.6.PWM触发ADC计数器寄存器2.7.PWM2翻转寄存器2.8.PWMn控制寄存器2.9.PWMn电平保持控制寄存器3.PW

qq_36139768的博客 5219

java中的throw new Exception();和throw e;异常抛出

java代码如下: package com.imooc.exception; public class Throw1 {     public static void main(String[] args) {         // TODO Auto-generated method stub         Throw1 test = new Throw1();    

探索者_wmc的博客 8万+

奥顺居PHP测算引流SEO程序_八字风水_起名解梦_星座生肖综合门户源码

奥顺居PHP测算引流SEO程序_八字风水_起名解梦_星座生肖综合门户源码 S30新框架适合多种奥顺插件。

xl1407的博客 1753

MNI152 坐标空间和 fsaverage 坐标空间相互转换, 如已知fsaverage空间的坐标如何求MNI152 坐标?aparc.a2009s.annot转化到MNI152空间?

大多数神经影像学研究的结果是在体积(例如,MNI152)或表面(例如,fsaverage)坐标系中报告的。体积坐标系和表面坐标系之间的准确映射可以促进许多应用,例如将 fMRI 组分析从 MNI152 投影到 fsaverage 以进行可视化或从 fsaverage 投影静息状态 fMRI 分区对 MNI152进行新数据的体积分析。Wu et al., 2018 评估了三种在 MNI152通过模拟上述应用的 Colin27 和 fsaverage 坐标系:将组平均数据从 MNI152/Colin27 投影到

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 2966

Java中throw和throws的区别

throw和throws作为Java中两种异常抛出关键字,虽然两个长的很像,但是却有着很大的区别。 区别1: throws: 跟在方法声明后面,后面跟的是异常类名 throw: 用在方法体内,后面跟的是异常类对象名 public static void method() throws ArithmeticException {// 跟在方法声明后面,后面跟的是异常...

interesting_code的博客 3万+

20、微电网系统的系统框架、建模与控制架构解析

本文详细解析了微电网系统的系统框架、建模方法以及控制架构。文章首先介绍了在系统的系统(SoS)框架下,微电网如何通过微控制器(MC)和微电网中央控制器(MGCC)协调运行,并支持并网与孤岛模式下的高效能量管理。随后,针对微电网的关键组件,包括微涡轮机、光伏太阳能电池和风力涡轮机,提供了详细的数学建模分析。最后,探讨了微电网的控制架构设计,涵盖分层控制和共识控制策略,以实现系统的高效、稳定运行,满足日益增长的能源需求与市场要求。

elastic6hunter的博客 206

Java 中 throw 和 throws 的全面解析

/ 自定义检查型异常// 无参构造super("业务异常发生");// 带详细消息的构造// 带原因异常的构造// 方法声明可能抛出自定义异常// 抛出自定义异常实例throw new MyBusinessException("数值不能为负数");System.out.println("验证通过,值为:" + value);自定义异常是开发者根据业务需求创建的异常类型,用于更精准地表示程序中出现的特定错误情况。throw和throws在自定义异常的使用中也相互配合。

Toroto5的博客 2364

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Java中throw和throws有什么区别?

一、说明: 1、throw 在方法体内使用,throws 在方法声明上使用; 2、throw 后面接的是异常对象,只能接一个。throws 后面接的是异常类型,可以接多个,多个异常类型用逗号隔开; 3、throw 是在方法中出现不正确情况时,手动来抛出异常,结束方法的,执行了 throw 语句一定会出现异常。而 throws 是用来声明当前方法有可能会出现某种异常的,如果出现了相应的异常,将由调用者来处理,声明了异常不一定会出现异常。 二、相关解析 throw 和 throws 都是用来进行

weixin_46511008的博客 1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Java基础语法(十三):throw和throws

在 Java 编程中,异常处理是非常重要的一环,它不仅能够保护程序运行的稳定性,还能够提高代码的可读性和易维护性。Java 中抛出异常的语句有两种,分别是 throw 和 throws,本文将详细介绍这两个关键字的使用方法及其区别。一、throw 和 throws 都是 Java 中用于异常处理的关键字,它们的作用不同。throw 用于抛出异常对象,主要用于在代码中手动抛出异常。throws 用于声明方法可能会抛出哪些异常,在方法调用栈中往上层抛出异常,依赖于调用该方法的上层代码去处理。

分享是一种积极的生活态度~~ 1万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

throw java_THROW,JAVA的throw和throws怎么用!

JAVA的throw和throws怎么用!throw是语句抛出一个异常;2113语法5261:throw(异常对象);throws是方法可能抛出异常的声4102明。(用在声明方法时1653,表示该方法可能要抛出异常) ;语法:[(修饰符)](返回值类型)(方法名)([参数列表])[throws(异常类)]{......}当某个方法可能会抛出某种异常时用于throws 声明可能抛出的异常,然后交给...

weixin_29054523的博客 2068

Java里throw和throws的区别

throws :仅声明异常类型,不负责处理异常,调用该方法时必须处理这些异常(用 try-catch 捕获或继续用 throws 声明)。- throw :抛出异常后,若没有被 try-catch 捕获,会向上层调用者传递异常,导致方法终止执行。- throws :声明方法可能抛出的异常类型,用于方法签名中,告诉调用者该方法可能抛出哪些异常。遇到异常问题时,先想清楚是要“主动抛出异常”还是“声明方法可能的异常”,再选择对应的关键字~ 😊。// 调用throws声明的方法时,必须处理异常。

2501_91001675的博客 1274

java异常throws怎么用,throw_JAVA的throw和throws怎么用!

广告位API接口通信错误,查看德得广告获取帮助JAVA的throw和throws怎么用!throw是语句抛出一个异常;语法:throw(异常对象);扩展资料:throw与throws的区别1、throw用在方法体内,上面代码显示了,是直接在main方法体内throws用在方法声明后面,表示再抛出异常,由该方法的调用者来处理。这个看上面的代码就理解了。2、throw是具体向外抛异常的,抛出的是一个异...

weixin_35070578的博客 5734

throw和throws的区别(java)

java中throws和throw的区别

程序员阿龙的博客 1万+

java中throw和throws的区别

throw语句用在方法体内,表示抛出异常,由方法体内的语句处理。 throws语句用在方法声明后面,表示抛出异常,由该方法的调用者来处理。throws主要是声明这个方法会抛出这种类型的异常,使它的调用者知道要捕获这个异常。 throw是当程序出现某种逻辑错误时由程序员主动抛出某种特定类型的异常是,具体向外抛异常的动作,所以它是抛出一个异常实例。throw与throws的比较 1、throws出

不知名的博客 8521

java中throw是什么意思_Java中throw和throws的区别是什么

Java中throw和throws的区别是什么发布时间:2020-07-22 11:26:39来源:亿速云阅读:83作者:Leah这篇文章运用简单易懂的例子给大家介绍Java中throw和throws的区别是什么,代码非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。区别分析:throws:用来声明一个方法可能产生的所有异常,不做任何处理而是将异常往上传,谁调用就抛给谁。用在方法声明后...

weixin_39835925的博客 2689

java throw是什么_Java中throw和throws有什么区别,throw是什么意思

当然,你需要明白异常在Java中式以一个对象来看待。并且所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,但是一般情况下Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行。直接进入正题哈:1.用户程序自定义的异常和应用程序特定的异常,必须借助于 throws 和 throw 语句来定义抛出异常。1.1 throw是语句抛出一个异常。语法:t...

weixin_40006977的博客 1853

Java throw和throws有什么区别?

在Java中,throw和throws都是与异常处理相关的关键字,但它们在使用方式和目的上存在显著差异。throw用于在方法内部抛出异常对象。throws用于在方法签名中声明该方法可能抛出的异常类型。如果一个方法使用了throw来抛出非运行时异常,则必须在方法签名中使用throws来声明这些异常,或者在方法内部捕获并处理它们。

cesske的博客 545

java中的throw和throws_基于Java中throw和throws的区别(详解)

系统自动抛出的异常所有系统定义的编译和运行异常都可以由系java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行。语句抛出的异常用户程序自定义的异常和应用程序特定的异常,必须借助于 throws 和 throw 语句来定义抛出异常。throw是语句抛出一个异常。语法:throw (异常对象);throw e;throws是方法可能抛出异常的声明。(用在声明方法时,...

weixin_42508215的博客 951
上一篇: 详谈重载(overload)覆盖(override)与隐藏 ( hide )
下一篇: Android开发集锦之一:adb shell error: device not found android错误
i丹明扬
博客等级 码龄15年 331粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值