Java中throws和throw的区别讲解
当然,你需要明白异常在Java中式以一个对象来看待。
并且所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,但是一般情况下Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行。
直接进入正题哈:
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、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。
到此这篇关于简单讲解java中throws与throw的区别的文章就介绍到这了,更多相关java中throws与throw的区别内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!
本文向大家介绍throw 和 throws 的区别?相关面试题,主要包含被问及throw 和 throws 的区别?时的应答技巧和注意事项,需要的朋友参考一下 throw:是真实抛出一个异常。 throws:是声明可能会抛出一个异常。
问题内容: 任何人都可以通过示例清楚地说明Java异常处理中throw与throws之间的区别吗?我曾尝试使用Google谷歌搜索,但无法得出结论。请帮助 问题答案: 子句用于声明异常,关键字用于显式引发异常。 如果我们明智地看待语法,则在其后是一个实例变量,然后是异常类名称。 在方法体内使用关键字来调用异常,在方法声明(签名)中使用子句。 例如 扔 抛出 您不能使用声明多个异常。您可以声明多个异
本文向大家介绍对比Java讲解Kotlin中?.与!!.的区别,包括了对比Java讲解Kotlin中?.与!!.的区别的使用技巧和注意事项,需要的朋友参考一下 前言 本文主要介绍了关于Kotlin中?.与!!.的区别,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 1、?. 2、!!. 时间宝贵的同学可以不要看下面的了(` _ `) 3、再来说下"!!" 值得一提的是,当我们直接调
问题内容: 可以任你解释的区别是什么之间以及和什么时候使用? 问题答案: :在编写方法时使用,用于声明所讨论的方法引发指定的(已检查)异常。 与检查的异常相反,运行时异常(等)可能会在没有声明方法的情况下引发。 :实际引发异常的指令。(或更具体地说,Throwable)。 关键字后面是对Throwable(通常是异常)的引用。 :必须扩展该类才能创建自己的,自定义的,可抛出的。
本文向大家介绍简单了解Spring中BeanFactory与FactoryBean的区别,包括了简单了解Spring中BeanFactory与FactoryBean的区别的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了简单了解Spring中BeanFactory与FactoryBean的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考
本文向大家介绍简单讲解c++ vector,包括了简单讲解c++ vector的使用技巧和注意事项,需要的朋友参考一下 在c++中,vector是一个十分有用的容器。 作用:它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。 vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。 特别