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 输入类型异常
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)