问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Java中throws和throw的区别讲解

发布网友 发布时间:2022-04-22 13:50

我来回答

4个回答

热心网友 时间:2023-01-23 16:53

1.throw:(针对对象的做法)
抛出一个异常,可以是系统定义的,也可以是自己定义的。下面举两个例子:
抛出Java中的一个系统异常:
public class One {
public void yichang(){
NumberFormatException e = new NumberFormatException();
throw e;
}
public static void main(String[] args){
One test = new One();
try{
test.yichang();
}catch(NumberFormatException e){
System.out.println(e.getMessage());
}
}
}
抛出一个自定义的异常:

public class People {
public static int check(String strage) throws MyException{
int age = Integer.parseInt(strage);
if(age < 0){
throw new MyException("年龄不能为负数!");
}
return age;
}
public static void main(String[] args){
try{
int myage = check("-101");
System.out.println(myage);
}catch(NumberFormatException e){
System.out.println("数据格式错误");
System.out.println("原因:" + e.getMessage());
}catch(MyException e){
System.out.println("数据逻辑错误");
System.out.println("原因:" + e.getMessage());
}
}
}
public class MyException extends Exception{
private static final long serialVersionUID = 1L;
private String name;
public MyException(String name){
this.name = name;
}
public String getMessage(){
return this.name;
}
}
2.throws:(针对一个方法抛出的异常)
抛出一个异常,可以是系统定义的,也可以是自己定义的。
抛出java中的一个系统异常:
public class One {
public void yichang() throws NumberFormatException{
int a = Integer.parseInt("10L");
}
public static void main(String[] args){
One test = new One();
try{
test.yichang();
}catch(NumberFormatException e){
System.out.println(e.getMessage());
}
}
}
抛出一个自定义异常:
public class People {
public static int check(String strage) throws MyException{
int age = Integer.parseInt(strage);
if(age < 0){
throw new MyException("年龄不能为负数!");
}
return age;
}
public static void main(String[] args){
try{
int myage = check("-101");
System.out.println(myage);
}catch(NumberFormatException e){
System.out.println("数据格式错误");
System.out.println("原因:" + e.getMessage());
}catch(MyException e){
System.out.println("数据逻辑错误");
System.out.println("原因:" + e.getMessage());
}
}
}
public class MyException extends Exception{
private static final long serialVersionUID = 1L;
private String name;
public MyException(String name){
this.name = name;
}
public String getMessage(){
return this.name;
}
}
3.那么下面我要说究竟什么时候用哪种:

如果是系统异常的话可以什么都不用做,也可以针对方法抛出一个异常,因为系统异常是可以被系统自动捕获的,所以这个异常究竟是要在方法内部解决还是交给上
层函数去解决其实效果是一样的。但是我查了很多资料,即使会抛出异常能被系统所捕获的话还是建议针对方法写一个throws,因为这样在完成一个大型任务
的时候可以让别的程序员知道这里会出现什么异常。
如果是自己定义的异常,则必须要用throws抛出该方法可能抛出的异常,否则编译会报错。

热心网友 时间:2023-01-23 18:11

  Java中throws和throw的区别如下:

throws是用来声明一个方法可能抛出的所有异常信息,用于声明异常,例如,如果一个方法里面不想有任何的异常处理,则在没有任何代码进行异常处理的时候,必须对这个方法进行声明有可能产生的所有异常,hrows是将异常声明但是不处理,而是将异常往上传,谁调用就交给谁处理。

throw则是指抛出的一个具体的异常类型。就是自己进行异常处理,处理的时候有两种方式,要么自己捕获异常

  注意:throw一旦进入被执行,程序立即会转入异常处理阶段,后面的语句就不再执行,而且所在的方法不再返回有意义的值!

热心网友 时间:2023-01-23 19:45

throw和throws的区别:
1、throw代表动作,表示抛出一个异常的动作;throws代表一种状态,代表方法可能有异常抛出
2、throw用在方法实现中,而throws用在方法声明中
3、throw只能用于抛出一种异常,而throws可以抛出多个异常

热心网友 时间:2023-01-23 21:37

Java中throws 和throw关键字具体的理解如下:
1.用户程序自定义的异常和应用程序特定的异常,必须借助于 throws 和 throw 语句来定义抛出异常。
1.1 throw是语句抛出一个异常。
语法:throw (异常对象);
throw e;
1.2 throws是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常)
语法:[(修饰符)](返回值类型)(方法名)([参数列表])[throws(异常类)]{......}
public void doA(int a) throws Exception1,Exception3{......}
举例:
throws E1,E2,E3只是告诉程序这个方法可能会抛出这些异常,方法的调用者可能要处理这些异常,而这些异常E1,E2,E3可能是该函数体产生的。
throw则是明确了这个地方要抛出这个异常。

如: void doA(int a) throws IOException,{
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、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? java程序中的throws是干什么用的? Java中throw和throws的区别 java中throws有什么用,就算不写throws,一样是可以向调用方法的方法抛出异常 计划去珠海游玩,需要提前做哪些准备? java中的throws用法 java中的throw到底有什么用? Java语言中throw和throws的区别是什么? 在java中,throw与throws有什么区别 有没有珠海自驾游攻略 Java中throw和throws有什么区别? 广州、深圳、珠海四日游深圳、珠海游 JAVA的throw和throws怎么用! 珠海旅游景点那些值得去? 珠海自由行 求珠海自助游攻略 珠海两天一晚旅游攻略 想去珠海玩3天2夜怎么安排行程 去珠海旅游,有哪些攻略值得分享? 三天两夜珠海旅游攻略 珠海旅游攻略 JAVA 抛出异常throws怎么用的? JAVA&nbsp;抛出异常throws怎么用的? java throw和throws的区别 java中throw和throws的具体干嘛的? JAVA throws使用举例 java里什么时候用throws 在java中,异常捕捉中,什么时候方法头就要加上throws,有时却又不要呢? 在java中throw与throws各自用在什么地方? java中异常处理的throws的作用是什么 如何使用扫描功能 outlook怎么扫二维码 别人发给我的世qq文件里的二维码怎么扫 诺基亚1520win10系统怎样扫描 二维码扫描 Hp3638打印机如何扫描‘ 有什么好用的二维码扫描工具吗? 这个二维码可以用电脑二维码扫描出来吗? 秦朝徐福真的能够东渡日本吗,有哪些历史依据? 日本人是徐福东渡,留下的后裔?这个谜题*大白了吗? 徐福东渡起航港在何处? 秦朝方士徐福在历史上是真实存在的吗?他真的有东渡到日本吗?