一:引出异常
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();
}
}
}
六:练习
下标越界, 空指针异常,数学运算异常,类型装换异常