JAVA异常

JAVA异常,第1张

JAVA异常 基本原理

java中的异常处理是保证java程序健壮性的一种体现,jdk当中设计了java的异常处理的一系列API,顶级类:throwable,下面两大分支:

Error错误是java无法处理的严重问题,比如OutOfMemoryError内存溢出错误,StackOverFlowError堆栈溢出错误

Exception:异常,有两大类:

运行时异常:RuntimeException编译不报错,但是运行时会出错。

编译时异常:Exception 要求程序员马上处理,一、trycatch二、throw抛出

运行原理

异常工作原理如下:一旦程序有异常,jvm会第一时间捕获异常,会创建一个此类异常的实例,

在实例当中存储和封装异常信息:

异常发生的类名、异常发生的方法名、异常发生的文件名、异常发生的行号、异常发生的类的反射名称

jvm依赖注入的异常实例拿到这些信息之后,把这些信息记录下来,供运维人员查看,

一、控制台输出二、记录扩展名为log文件三、记录扩展名为html的文件四、记录为数据库的表文件

异常处理的原则必须遵守:异常出现不能压制,底层异常必须及时的捕获和转换成RuntimeException抛出,

目的:为了底层信息能及时让顶层的捕获,展示给客户看,因为捕获的异常可能不是运行时异常而是编译时异常,

如果直接抛那么上级都将要处理异常,程序可读性不好。

不是所有的异常都能解决,所有要自定义异常类。

自定义异常类必须继承 Exception 或者RuntimeException再或者throwable,才能成为一个异常类

java中有五大关键字:try:包裹可能会报异常的代码

catch:用来捕获try语句块中发生的异常。

finally:表示包裹的代码无论是否发生异常都会运行,一般用来关闭数据库的连接或者关闭IO流

有一种将不会执行:catch里面有jvm程序退出的方法

throw:立即抛出异常,只能写方法内部,只能抛出一个

throws:有可能抛出异常,在方法的声明处,可以有多个,每个异常用逗号分隔

运用场景

如果我们把异常储存在静态块里面,就只能trycatch

如果有父子类继承关系,子类不允许抛出比父类更大的异常,只能平齐或者更小

这样才能把我们的子类设计的更健壮更优秀更安全

常见异常

ClassNotFoundException 文件没找到异常

ArithmeticException 算数异常

InputMismatchException 输入类型异常

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5682423.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存