throw: 抛出具体的某一个异常;
throws:声明可能会抛出哪些异常。
code 如下:
package exception;
public class Main {
public static void main(String[] args) {
/**
* 方法1:方法内部已经处理异常,不需要处理异常(throw)
* 因为已在内部处理了异常,程序会继续执行,所以会有返回值。
*/
System.out.println(Main.divisionOne(1, 0));
/**
* 方法2:方法内部抛出异常,此处需要继续抛出异常或者捕获异常并处理(捕获)
* 程序会中断运行,不会有返回值
*/
try {
System.out.println(Main.divisionTwo(1, 0));
} catch (MyException e) {
e.printStackTrace(System.out);
System.out.println(e.getMessage());
}
}
public static int divisionOne(int first,int second) {
int result = 0;
try {
// 使用自定义异常,throw:在方法体中捕获具体的一个处理
if(second==0) throw new MyException("second can not be 0");
result = first / second;
} catch (MyException e) {
e.printStackTrace(System.out);
System.out.println(e.getMessage());
}
return result;
}
// 使用自定义异常,throws:在方法上声明可能会抛出哪些异常
public static int divisionTwo(int first,int second) throws MyException{
int result = 0;
if(second==0) throw new MyException("second can not be 0");
result = first / second;
return result;
}
}