一:引出异常
public class Test {public static void main(String[] args) {//1. num1 / num2 => 10 / 0//2. 当执行到 num1 / num2 因为 num2 = 0,//程序就会出现(抛出)异常 ArithmeticException//3. 当抛出异常后,程序就退出,崩溃了 , 下面的代码就不在执行int num1 = 10;int num2 = 0;//将该代码块->选中->快捷键 ctrl + alt + t -> 选中 try-catch//4. 如果进行异常处理,那么即使出现了异常,程序可以继续执行try {int res = num1 / num2;} catch (Exception e) {e.printStackTrace();//也可以输出异常错误信息System.out.println(e.getMessage());}System.out.println("程序继续运行....");}}
二:基本概述
Java语言中,将程序执行中发生的不正常情况称为“异常”,(在开发过程中的语法错误和罗技错误不是异常)
- 执行过程中锁发生的异常事件可分为两大类


- 异常分为两大类,运行时异常和编译时异常
- 运行时异常,编译器检查不出来。一般是指编程时的逻辑错误,是程序员应该避免其出现的异常。java.lang.RuntimeException类及它的子类都是运行时异常
- 对于运行时异常,可以不作处理,因为这类异常很普遍,若全处理可能会对程序的可读性和运行效率产生影响
-
四:常见的运行时异常
1:常见的运行时异常包括
NullPointerException 空指针异常
- ArithmeticException 数学运算异常
- ArrayIndexOutOfBoundsException 数组下标越界异常
- ClassCastException 类型转换异常
- NumberFormatException 数字格式不正确异常 [ ]
2:常见的运行时异常举例
<1>NullPointerException 空指针异常
public class Test {public static void main(String[] args) {String name = null;System.out.println(name.length());}}
<2>ArithmeticException 数学运算异常
public class Test {public static void main(String[] args) {int num1 = 10;int num2 = 0;int res = num1 / num2;}}
<3>ArrayIndexOutOfBoundsException 数组下标越界异常
public class Test {public static void main(String[] args) {int[] arr = {1,1,3,4,6};for (int i = 0; i < 6; i++) {System.out.println(arr[i]);}}}
<4>ClassCastException 类型转换异常
public class Test {public static void main(String[] args) {A b = new B(); /*向上转型*/B b1 = (B)b; /*向下转型*/C c = (C)b; /*B和C是没有关系的*/}}class A{}class B extends A{}class C extends A{}
<5>NumberFormatException 数字格式不正确异常 [ ]
public class Test {public static void main(String[] args) {String name = "1234";String name1 = "sakura";int num = Integer.parseInt(name1);//不能将字符串转为数字System.out.println(num);}}
五:编译异常
编译异常是指在编译期间,就必须处理的异常,否则代码不能通过编译。
- SQLException //操作数据库时,查询表可能发生异常
- IOException //操作文件时,发生的异常
- FileNotFoundException //当操作一个不存在的文件时,发生异常
- ClassNotFoundException //加载类,而该类不存在时,异常
- EOFException //操作文件,到文件末尾,发生异常
IllegalArguementException //参数异常
1:案例说明
public class Exception02 {public static void main(String[] args) {try {FileInputStream fis;fis = new FileInputStream("d:\\aa.jpg");int len;while ((len = fis.read()) != -1) {System.out.println(len);}fis.close();} catch (IOException e) {e.printStackTrace();}}}
六:练习

下标越界, 空指针异常,数学运算异常,类型装换异常

