当前位置: 技术问答>java相关
小问题:throw 与 throws 区别?
来源: 互联网 发布时间:2017-05-03
本文导语: 小问题:throw 与 throws 区别? | 补充:一个方法可以在方法声明时有throws,但里面却不真正的throw任何异常。另外,如果throw的是一个RuntimeException,方法声明的时候可以忽略不写throws;反之...
小问题:throw 与 throws 区别?
|
补充:一个方法可以在方法声明时有throws,但里面却不真正的throw任何异常。另外,如果throw的是一个RuntimeException,方法声明的时候可以忽略不写throws;反之,如果throw的是一个Exception,方法声明的时候一定要表现出来。如果用英文理解,Exception类的子类,除了RuntimeException及其子类,又叫Checked-Exception,必须在编译的时候就被检查(比如私有的方法的使用);而RuntimeException及其子类,又叫Unchecked-Exception,可以在编译的时候忽略掉,因为他们是难以检查的(比如用户输入的数据)。
|
Throw语句明确地引发一个异常。例如:首先通过catch子句的参数或使用new运
算符获得一个Throwable实例的句柄。格式为:throw ThrowableInstance(对
象);执行throw语句后,运行流程立即停止,throw的下一条语句将暂停执行,系
统转内存的一个try语句块检查是否有catch子句能匹配Throwable实例。如果找到
了相匹配的实例,系统转向该子句。如果没找到,则转向上一层的try语句,这样逐
层往上,直到最外层的异常处理程序中止程序并打印出调用栈状况。
一个方法可能引发一个异常而它自己又没有处理,那么应该指明异常,让其他调
用者来处理这个异常,Throws关键字可用来指明方法中可能引发的所有异常。对于
大多数的Exception子类,Java编译器要求指明方法引发的异常类型。但如果异常
的类型为Error和RuntimeException或他们的子类,这条规则就不适用了。因为他
们不是程序正常执行时所能引发的。如果一个方法明确地引发一个Exception.....
算符获得一个Throwable实例的句柄。格式为:throw ThrowableInstance(对
象);执行throw语句后,运行流程立即停止,throw的下一条语句将暂停执行,系
统转内存的一个try语句块检查是否有catch子句能匹配Throwable实例。如果找到
了相匹配的实例,系统转向该子句。如果没找到,则转向上一层的try语句,这样逐
层往上,直到最外层的异常处理程序中止程序并打印出调用栈状况。
一个方法可能引发一个异常而它自己又没有处理,那么应该指明异常,让其他调
用者来处理这个异常,Throws关键字可用来指明方法中可能引发的所有异常。对于
大多数的Exception子类,Java编译器要求指明方法引发的异常类型。但如果异常
的类型为Error和RuntimeException或他们的子类,这条规则就不适用了。因为他
们不是程序正常执行时所能引发的。如果一个方法明确地引发一个Exception.....