当前位置: 代码迷 >> 综合 >> 00015.01 异常的描述和体系结构
  详细解决方案

00015.01 异常的描述和体系结构

热度:85   发布时间:2024-02-21 10:19:17.0

文章目录

  • 一、是什么?
  • 二、怎么用
    • 三、异常的体系结构
    • 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)

总结