Java的throw 和throws有啥区别?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java的throw 和throws有啥区别?相关的知识,希望对你有一定的参考价值。
他们两个怎么用?比如说当n=0的时候就抛出异常,该怎么做呢?
java中throw和throws的区别throw语句用在方法体内,表示抛出异常,由方法体内的语句处理。
throws语句用在方法声明后面,表示抛出异常,由该方法的调用者来处理。
throws主要是声明这个方法会抛出这种类型的异常,使它的调用者知道要捕获这个异常。
throw是当程序出现某种逻辑错误时由程序员主动抛出某种特定类型的异常是,具体向外抛异常的动作,所以它是抛出一个异常实例。
throw与throws的比较
1、throws出现在方法函数头;而throw出现在函数体。
2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象。
3、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。
throws:
public static void write() throws FileNotFoundException
FileInputStream fileInputStream=new FileInputStream("c");
throw:
String s = "abc";
if (s.equals("abc"))
throw new NumberFormatException();
else
System.out.println(s);
如果对编程感兴趣可以来我这个看看,希望对您有所帮助!~ 参考技术A
public void test() throws Exception
int n=0;
if(n==0)
throw new Exception();
throws用于方法,表明此方法抛出某种异常,异常类型由throws后面的参数Exception的类型决定
throw用于语句中抛出异常,它抛出的异常可以用try-catch捕获处理,也可以在它所在的方法后面用throws再次抛出,比如上面的代码。
而throw是一个动作 ,也就是当出现异常的时候将该异常抛出
Java面试题|throw和throws的区别?
每天一道面试模拟真题及解析
●回复"每日一练"获取以前的题目,持续更新!
●我希望大家积极参与!有什么不懂可以加小千微信进行讨论
★把面试准备工作,拆分、融入到平时每天
参考答案:
throw:
-
表示方法内抛出某种异常对象(只能是一个) -
用于程序员自行产生并抛出异常 -
位于方法体内部,可以作为单独语句使用 -
如果异常对象是非 RuntimeException 则需要在方法申明时加上该异常的抛出,即需要加上 throws 语句 或者 在方法体内 try catch 处理该异常,否则编译报错 -
执行到 throw 语句则后面的语句块不再执行
-
方法的定义上使用 throws 表示这个方法可能抛出某些异常(可以有多个) -
用于声明在该方法内抛出了异常 -
必须跟在方法参数列表的后面,不能单独使用 -
需要由方法的调用者进行异常处理
package constxiong.interview;
import java.io.IOException;
public class TestThrowsThrow {
public static void main(String[] args) {
testThrows();
Integer i = null;
testThrow(i);
String filePath = null;
try {
testThrow(filePath);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 测试 throws 关键字
* @throws NullPointerException
*/
public static void testThrows() throws NullPointerException {
Integer i = null;
System.out.println(i + 1);
}
/**
* 测试 throw 关键字抛出 运行时异常
* @param i
*/
public static void testThrow(Integer i) {
if (i == null) {
throw new NullPointerException();//运行时异常不需要在方法上申明
}
}
/**
* 测试 throw 关键字抛出 非运行时异常,需要方法体需要加 throws 异常抛出申明
* @param i
*/
public static void testThrow(String filePath) throws IOException {
if (filePath == null) {
throw new IOException();//运行时异常不需要在方法上申明
}
}
}
以上是关于Java的throw 和throws有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
Swift 中的 throws 和 rethrows 有啥区别?
`throw 'foo'`、`throw Error('foo')`、`throw new Error('foo')` 有啥区别?