概述
编译时异常:必须显示处理(try……catch……),否则程序就会发生错误,无法通过编译
运行时异常:无需显示处理,也可以和编译时异常一样处理
举例
-
运行时异常:
package com.exception; public class Test2 { public static void main(String[] args) { method(); } //运行时异常 public static void method(){ int[] arr={1,2,3}; System.out.println(arr[3]); //ArrayIndexOutOfBoundsException } }
-
编译时异常:
package com.exception; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Test3 { public static void main(String[] args) { method(); } //编译时异常 public static void method(){ try { String s="2048-08-09"; SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); Date d = sdf.parse(s); System.out.println(d); } catch (ParseException e) { e.printStackTrace(); } } }
区别
编译时异常,又叫受检异常,是指有可能出异常,不代表一定会出现异常。在编译时异常中,不管是否会出现异常,Java都强制要求我们在代码中进行显式的声明和捕获,否则就会产生编译错误。
而运行时异常特点是,如果不产生编译错误、不捕获异常,那么异常会在运行时刻才被抛出。
重要声明:本篇文章整理自黑马程序员全套Java教程