什么是异常
-
某模块不符合要求、打开某个文件格式不对、非法参数、读取数据为空、内存满了
-
我们叫他Exception
-
检查性异常:代表是用户错误或问题引起的异常,是程序员无法预见的
-
运行是异常:程序员最容易忽略的异常
-
错误:不是异常
异常体系结构
-
检查性异常:代表是用户错误或问题引起的异常,是程序员无法预见的
-
运行是异常:程序员最容易忽略的异常
-
错误:不被期望捕获的对象
Java异常处理机制
-
Java把异常当做对象来处理,定义一个基类java.lang.Throwable作为所有异常的超类
-
Java API中定义了许多异常类,这些异常类分为两大类,错误Error和异常Exception
-
Error类对象
-
由虚拟机生成抛出
-
Java虚拟机运行错误,会选择线程终止
-
还有发生在虚拟机试图执行应用时,如类定义错误、链接错误。这些错误是不可查的。
-
-
Exception
-
重要子类RuntimeException(运行时异常)
-
数组下标越界:ArrayIndexOutOfBoundsException
-
空指针异常:NullPointerException
-
算术异常:ArithmeticException
-
丢失资源:MissingResourceException
-
找不到类:ClassNotFoundException
-
-
这些异常一般由程序员失误,导致程序逻辑错误引起的
-
-
Error是灾难性的致命的错误,是程序无法控制和处理的,Java虚拟机会终止线程
-
Exception通常情况下是程序可处理的,记得抛出就好了
处理异常
-
捕获异常
-
抛出异常
-
异常处理5个关键字
-
try、catch、finally、throw、throws
-
catch(想要捕获的异常类型),Throwable什么异常都能捕获出来
-
catch(Exception e){ e.printStackTrace();}:e.printStackTrace()打印错误的栈信息,其前面可以跟输出打印些信息
-
finally一般处理一些善后工作,比如IO流关闭之类的
-
throw是主动的抛出异常,一般在方法中使用,比如在这个地方处理不了,抛在其他地方处理
-
自定义异常
只需要继承Exception类即可
-
创建自定义异常
-
在方法中通过throw关键字抛出异常对象
-
可以使用try-catch语句捕获并处理;否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,进行下一步操作
-
在出现异常方法的调用者中捕获并处理异常