异常关键字throws和throw

今天药忘吃喽~ 2021-07-24 16:02 524阅读 0赞

关键字 throws

在声明一个方法时,明确这个方法可能抛出xx异常,说明这些异常在方法中没有try…catch处理,而由上层调用者处理

语法格式:
[修饰符] 返回值类型 方法名([形参列表])[throws 异常]{
}

说明:throws后面可以接多个异常,一般有多个异常时,如果有包含关系,那么只写范围大的异常.

throws和方法重写:

方法重写的要求:
(1)方法名必须相同
(2)形参列表必须相同
(3)返回值类型
基本数据类型和void:必须相同
引用数据类型:小于等于原方法的数据类型
(4)权限修饰符
大于等于原方法的权限修饰符
(5)抛出的异常类型的列表
抛出的异常类型的范围小于等于原方法的范围

  1. public class TestThrows {
  2. public static void main(String[] args) {
  3. try {
  4. divide(3,0);
  5. } catch (ArithmeticException e) {
  6. System.out.println("除数为0");
  7. }
  8. }
  9. public static int divide(int a,int b)throws ArithmeticException {
  10. return a/b;
  11. }
  12. }

关键字 throw

异常对象:
(1)JVM抛出的
(2)程序员主动抛出的

throw用于主动抛出异常,无论是JVN抛出的异常还是程序员主动抛出的异常,最终都是用try…catch来处理

语法格式:
throw 异常对象

用throw抛出的异常必须直接用try…catch来处理,如果不处理,那么后面的代码都是不可达的代码

  1. public class TestThrow {
  2. /** * @param args */
  3. public static void main(String[] args) {
  4. // TODO 自动生成的方法存根
  5. }
  6. public void tset1() {
  7. try {
  8. //匿名的异常对象
  9. throw new RuntimeException();
  10. } catch (Exception e) {
  11. // TODO 自动生成的 catch 块
  12. e.printStackTrace();
  13. }
  14. System.out.println("其他代码");
  15. }
  16. public void tset2() {
  17. try {
  18. //有名字的异常对象
  19. RuntimeException e = new RuntimeException();
  20. throw e;
  21. } catch (Exception e) {
  22. // TODO 自动生成的 catch 块
  23. e.printStackTrace();
  24. }
  25. System.out.println("其他代码");
  26. }
  27. }

做一个练习
需求:(1)从键盘输入用户名.密码.检验码
(2) 当检验码错误的时候用异常来处理

  1. public class TestThrow {
  2. /** * @param args */
  3. public static void main(String[] args) {
  4. try {
  5. login();
  6. } catch (Exception e) {
  7. // TODO 自动生成的 catch 块
  8. System.out.println(e.getMessage());
  9. }
  10. }
  11. /*需求:从键盘输入用户名.密码.检验码 * 当检验码错误的时候用异常来处理 * * */
  12. public static void login() throws Exception {
  13. Scanner sca = new Scanner(System.in);
  14. System.out.println("请输入用户名");
  15. String uers = sca.next();
  16. System.out.println("请输入密码");
  17. String password = sca.next();
  18. String code = "1234";
  19. System.out.println("请输入检验码");
  20. String check = sca.next();
  21. if(!code.equals(check)) {
  22. throw new Exception("校验码输入错误");
  23. }
  24. }
  25. }

说明:在throw抛出异常时,如果没有try…catch来处理,相当于return,但是无法返回值,只能返回异常对象
Exception中的一个方法;
String getMessage() 这个方法用异常对象.getMessage()用来返回异常信息,异常的构造器可以创建一个带消息的对象.

发表评论

表情:
评论列表 (有 0 条评论,524人围观)

还没有评论,来说两句吧...

相关阅读

    相关 throw throws 关键字

    1.系统自动抛出异常: 当程序中有逻辑错误、类型转换错误时,系统自动抛出异常,例如: ![70][] ![70 1][]  2 .throw 关键字抛出异常 ![