Exceptions

                                                                    异常 Exception

 

一:导读---运行下面的代码,看看有什么问题


Exception.java

public static void main(String[] args) {

int num1 = 10;
int num2 = 0;
int res = num1/ num2;// 抛出异常ArithmeticException程序崩溃,下面代码不再执行
System.out.println("程序继续运行");

显然,这样的程序是不好的。如果因为这个错误导致程序完全崩了,程序健壮性太差。
针对上面出现的问题,java设计者设计出异常来处理-异常处理机制(异常捕获)
int num1 = 10;
int num2 = 0;
// 如果程序员认为一段代码可能出现异常,可以使用try-catch异常处理机制来解决,保证程序健壮性
// 将该代码块选中,按快捷键ctrl + alt + t -> 选中 try -catch
try {
int res = num1/ num2; // 抛出异常ArithmeticException程序崩溃,下面代码不再执行
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("程序继续运行");
这样处理以后下面的代码还可以继续执行。
输出:程序继续运行


二:异常体系图:


1:Throwable是所有子类实现的父类,Throwable下面呢又分为Error和Exceptions,Error就像癌症一样,程序直接down掉。异常分为编译时异常和运行时异常。

2:对于运行时异常,编译器检测不出来。可以不做处理,因为这类异常很普遍,若全处理可能会对程序的可读性 和运行效率产生影响
3:编译时异常,是编译器要求必须处理的异常

常见的运行时异常:
1)NullPointException空指针异常
  还没有创建出来这个对象就去使用,就会抛出这个异常。

2)ArithmeticException数字运算异常
  除0的时候抛出的异常。

3)ArrayIndexOutOfBoundsException数组下标越界异常
  索引为负或者大于等于数组大小抛出

4)ClassCastException类型转换异常
  两个没有关系的类不能强转
public class ClassCastException {
public static void main(String[] args) {
A b = new B();
C c2 = (C)b;
}
}
class A {}
class B extends A {}
class C extends A {}
会抛出Exception in thread "main" java.lang.ClassCastException:

5)NumberFormatException数字格式不正确异常

  String name = "你好";
// String name = "1234";这个可以转
// 将String转成 int
int num = Integer.parseInt(name);
System.out.println(num);
抛出异常:Exception in thread "main" java.lang.NumberFormatException: For input string: "你好"


三:常见的编译异常:
一般发生在网络文件数据库操作的时候。
SQLException // 操作数据库时,查询表可能发生异常
IOException // 操作文件是,发生的异常
FileNotFoundException // 当操作一个不存在的文件时,发生异常
ClassNotFoundException //加载类,而该类不存在时,异常
EOFException // 操作文件,到文件末尾发生异常
IIIegalArguementException // 参数异常

异常处理
基本介绍:异常处理就是当异常发生的时候,对异常的处理方式

两种处理方式:

1)try-catch-finally
程序员在代码捕获发生的异常,自行处理。不管try代码块有没有发生异常,finally的都要执行。try代码发生异常,catch的代码块才会执行。文件的必需关闭,数据库的必需关闭,网络的必需关闭,可以放到finally里面去执行,这就是它存在的意义。

 

2)throws
将发生的异常抛出,交给调用者(方法)来处理,最顶尖的处理者就是JVM。JVM处理异常很简单暴力,直接输出异常信息然后退出程序。
注:如果异常没有try-catch也没有显示的throws,默认是throws的

 

posted on 2021-03-18 17:07  Love&Share  阅读(257)  评论(0)    收藏  举报

导航