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抛出异常,当数据不合法时,提示异常信息,编译不通过。
运行结果: