文章目录
- 一、是什么?
- 二、怎么用
-
- 三、异常的体系结构
- 2、Throwable又分为两类
- (1)Error : 错误
- (2)Excption:指的是一般异常,合理的应用程序应该试图去捕获它
- 总结
一、是什么?
异常:表示不正常
在某些情况下,因为用户的一些原因,例如:配置的问题,或者错误输入的问题,比如登录的时候,程序里面要求必须是数字的,用户输入了字母和特殊符号,如果程序里面没有进行数据校验,也没有进行异常处理,就会引起程序“挂逼”
再奇葩一点的比如用户磁盘空间满了等因素导致程序无法进行运
特别注意,异常是指,如果没有用户原因,程序是可以正常运行的,如果你写的代码语法本身就有问题,编译都通不过,那不叫异常,叫语法错误
不是异常分两种:(1)语法错误 (2)逻辑错误
那什么叫异常呢?看下面这个就属于异常
Java的程序如果出现异常,并且在代码中没有做相应的处理,那么程序就会“崩溃”,“挂了”,就会起不来
那么Java如何处理呢
先了解一下Java异常处理的过程
(1)当程序运行到某一句时,发送了异常,程序会先停下来
(2)程序会在这句代码处,查看原因,生成一个合理的“异常对象”,然后“抛出”
(3)JVM虚拟机会检查在这句代码的外围,是否有try……catch 结构的语句可以捕获它,a、如果可以捕获,那么程序在处理完异常之后就会继续下面的语句,不会崩溃;b、如果不能捕获,那么就会抛给上级
比如之前的例子,我们给它添加try-catch
二、怎么用
那么即使你输错了,它也不会奔溃
注意:如果不能处理会抛给上级,上级还不能处理会逐级往上抛,但凡有一个级别处理了,就不会崩溃
三、异常的体系结构
所有类的根父类是Object
枚举的公共父类是Enum,根父类仍然是Objct
那么异常的公共父类是 Throwable
我们看API怎么说的
(1)只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Java throw 语句抛出。
意思就是,“抛”这个动作,只能抛 java.lang.Throwable和它的子类对象
从这句话我们可以看出,抛也不是什么都能抛的,
(2)catch 表示“抓”
类似地,只有此类或其子类之一才可以是 catch 子句中的参数类型。
所以你不管是抓还是抛。都必须是针对java.lang.Throwable 的对象
2、Throwable又分为两类
(1)Error : 错误
一般指严重的错误,一般合理的应用程序不应该试图去捕获它 ,如果出现这个问题,要么需要成绩程序,要么需要升级架构,要么需要升级硬件
比如:报了一个 OutofMemoryError 内存错误 ,这种即使你try-catch 也没用,try-catch后也还是没有内存,这个时候要怎么办,要么程序升级,你的程序或者架构有问题,要么升级硬件
非常经典的代表就是 虚拟机错误 (即 VirtualMachineError 其中包含了 堆内存和 栈内存还有其它(但是比较重要的是这两个))
(2)Excption:指的是一般异常,合理的应用程序应该试图去捕获它
Excption的已经子类就很多了
但是不需要记那么多,大概知道就行了
Excption 又分为两类:
(1)