
所有的异常都是在java.lang包中的Throwable类中
exception:程序本身发生的异常,可以捕获抛出异常,一般用try—catch—finally捕获。
error:发生在jvm层面的错误,程序无法处理。
编译时异常(Exception)
都是Exception类及其子类
必须显示处理,否则程序就会发生错误,无法通过编译
运行时异常(RuntimeException)
都是RuntimeException类及其子类
无需显示处理,也可以和编译时异常一样处理
public class myThrowable extends Throwable{@Override //返回异常发生时的简要描述public String getMessage() {return super.getMessage();}@Override //返回异常对象的本地化信息public String getLocalizedMessage() {return super.getLocalizedMessage();}@Override //返回异常发生时的详细信息public String toString() {return super.toString();}@Override //在控制台上打印 Throwable 对象封装的异常信息public void printStackTrace() {super.printStackTrace();}
}
throws是定义在方法上的,且跟在方法后面,异常类名一般抛出最大的Exception。
一般调用方用的异常要大一些。
定义格式:
public void 方法名() throws 异常类名 {// 代码
}
例子:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class myThrowable{public static void main(String[] args) throws Exception{System.out.println("开始");
// method1();method2();System.out.println("结束");}//编译时异常,异常必需要手动给出,否则报红public static void method2() throws ParseException {String s = "2022-08-08";SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date d = sdf.parse(s);System.out.println(d);}//运行时异常public static void method1() throws ArrayIndexOutOfBoundsException {int[] arr = {1, 2, 3};System.out.println(arr[3]);}
}
运行时异常: 运行时才会发生,所以在方法后面可以不写,运行时出现异常默认交给jvm处理

编译时异常:在编译时就会检查,所以一定要在方法后抛出异常处理

声明格式:
一般在方法中抛出,表示手动抛出异常,一般结合try-catch-fianlly使用
throw new 异常类型();
例子:
public class myThrowable{public static void main(String[] args){System.out.println("开始");method1();System.out.println("结束");}public static void method1() {try {int i = 1/0;System.out.println(i);} catch (Exception e) {e.printStackTrace();System.out.println("异常信息描述:"+e.getMessage());} finally {//}}
}

关于有返回值情况:

