throw与try/catch的理解

 

一、二者的含义

throw: 抛出异常,交与上一层或者调用层处理

try/catch: 捕获异常,在本方法内处理

二、举个小栗子

首先继承Exception类创建一个自己的异常类

 public class MyException extends Exception {
     // 写两个构造函数,方便使用本异常类
     public MyException() {
     }
 ​
     public MyException(String message) {
         super(message);
     }
 ​
 }

 

比较厉害的是自己写一个异常类,能力有限,就先使用Exception的东西了

然后在方法中定义自己的异常

1  public class SumMethod {
2      public static int sum(int number1, int number2) throws MyException {
3          if (number1 < 0 || number2 < 0) {
4              throw new MyException("不能计算负数的和");
5          }
6          return number1 + number2;
7      }
8  }

 

注:这里定义的异常实际上就是输出提示信息的地方,对于开发者来说,抛出异常比提示信息更有用。

当调用这个方法的时候,要么try/catch,要么throws异常

 1  public class ExceptionTest {
 2      @Test
 3      public void exceptionTest() {
 4          int sum = 0;
 5          try {
 6              sum = SumMethod.sum(1, -2);
 7              System.out.println("sum = " + sum);
 8          } catch (MyException e) {
 9              e.printStackTrace();
10          }
11      }
12  }

 

区别:使用try/catch程序不会编译报错,因为异常已经被捕获了;而使用throws抛出异常,当数据不合法时,提示异常信息,编译不通过。

运行结果:com.yycome.exceptionLearning.MyException: 不能计算负数的和

posted @ 2021-02-06 22:24  yyComeOn  阅读(447)  评论(0编辑  收藏  举报