Java 中 throw 和 throws 的区别
java 8object oriented programmingprogramming更新于 2024/11/8 7:09:00
throw 和 throws 都是异常处理的概念,throw 用于从方法或任何代码块中显式抛出异常,而 throws 用于方法的签名中,表示此方法可能抛出列出的类型异常之一。
以下是 throw 和 throws 之间的重要区别。
Sr.No. | 关键 | throw | throws |
---|---|---|---|
1 | 定义 | Throw 是一个关键字,用于在程序中的函数或代码块内显式抛出异常。 | Throws 是在方法签名中使用的关键字,用于声明在执行代码时函数可能抛出的异常。 |
2 | 内部实现 | 在内部实现 throw 是因为它一次只允许抛出一个异常,即我们不能用 throw 关键字抛出多个异常。 | 另一方面,我们可以使用 throws 关键字声明多个异常,这些异常可能由使用 throws 关键字的函数抛出。 |
3 | 异常类型 | 使用 throw 关键字我们只能传播未检查的异常,即不能使用 throw 传播已检查的异常。 | 另一方面,使用 throws 关键字可以声明已检查和未检查的异常,并且对于传播已检查的异常必须使用 throws 关键字,后跟特定的异常类名。 |
4 | 语法 | 语法上,throw 关键字后面跟着实例变量。 | 另一方面,语法上,throws 关键字后面跟着异常类名。 |
5 | 声明 | 为了使用 throw 关键字,我们应该知道 throw 关键字是在方法中使用的。 | 另一方面,throws 关键字与方法签名一起使用。 |
throw 与 throws 的示例
JavaTester.java
public class JavaTester{ public void checkAge(int age){ if(age<18) throw new ArithmeticException("Not Eligible for voting"); else System.out.println("Eligible for voting"); } public static void main(String args[]){ JavaTester obj = new JavaTester(); obj.checkAge(13); System.out.println("End Of Program"); } }
输出
Exception in thread "main" java.lang.ArithmeticException: Not Eligible for voting at JavaTester.checkAge(JavaTester.java:4) at JavaTester.main(JavaTester.java:10)
示例
JavaTester.java
public class JavaTester{ public int division(int a, int b) throws ArithmeticException{ int t = a/b; return t; } public static void main(String args[]){ JavaTester obj = new JavaTester(); try{ System.out.println(obj.division(15,0)); } catch(ArithmeticException e){ System.out.println("You shouldn't divide number by zero"); } } }
输出
You shouldn't divide number by zero