throw和throws有什么不同?
共同点:
两者在抛出异常时,他们只管把异常抛出,并不处理异常,由调用者负责处理。
区别
(1)throw语句总是出现在方法体里面,用来抛出一个异常,表示在这个地方就有一个异常出现,程序会在throw后面立即终止,它后面的语句将执行不到。
而throws是出现在方法名的后面,用来把方法中出现的异常抛出去给调用者处理。
当方法中出现了异常自己不想处理,那么可以使用throws在方法名后面将异常抛出
去给调用者处理。
(2)throw只能抛出一个异常对象。
而throws可以在方法名后面一次性抛出多个异常,多个异常对象以逗号分隔。
(3)throw抛出异常时,调用它的方法时可以不声明或不捕获,虽编译器不会报错,但是从开发角度说还是要使用try-catch来处理这个异常。
而throws抛出异常时,调用它的方法时也要声明抛出异常或者进行try-catch捕获,否则编译会报错。
二、throw
1、throw是语句抛出一个异常,一般是在代码块的内部,当程序
现某种逻辑错误时由程序员主动抛出某种特定类型的异常
2、定义在方法体内
3、创建的是一个异常对象
4、确定了发生哪种异常才可以使用
三、throws
1、在方法参数列表后,throws后可以跟着多个异常名,表示抛出的异常用逗号隔开
2、表示向调用该类的位置抛出异常,不在该类解决
3、可能发生哪种异常
throws用在方法声明后面,跟的是异常类名,throw用在方法体内,跟的是异常对象名。
throws可以跟多个异常类名,用逗号隔开,throw只能抛出一个异常对象名。
throws表示抛出异常,由该方法的调用者来处理,throw表示抛出异常,由方法体内的语句处理。
throws表示出现异常的一种可能性,并不一定会发生这些异常,throw则是抛出了异常,执行throw则一定抛出了某种异常。
四、异常
异常概述:
异常:异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序。简单来说就是程序出现了不正常的情况。异常本质就是Java当中对可能出现的问题进行描述的一种对象体现。
如果我们不做任何处理,异常将会交由虚拟机来处理
虚拟机的处理方式:
把异常的名称,异常出现的位置,异常原因,等信息输出打印在控制台,并同时将 程序停止执行。
在写程序时,对可能会出现异常的部分通常要用try{...}catch{...}去捕捉它并对它进行处理;
用try{...}catch{...}捕捉了异常之后一定要对在catch{...}中对其进行处理,那怕是最简单的一句输出语句,或栈输入e.printStackTrace();
如果是捕捉IO输入输出流中的异常,一定要在try{...}catch{...}后加finally{...}把输入输出流关闭;
如果在函数体内用throw抛出了某种异常,最好要在函数名中加throws抛异常声明,然后交给调用它的上层函数进行处理。
参考:
https://baijiahao.baidu.com/s?id=1692578578844100859&wfr=spider&for=pc
https://www.cnblogs.com/zhangsonglin/p/10556402.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)