博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
异常体系
阅读量:4644 次
发布时间:2019-06-09

本文共 1248 字,大约阅读时间需要 4 分钟。

要明确异常继承体系,用表格来表示,这样理解的更快

Java.lang.Throwable
  java.lang.Throwable.Error        java.lang.Throwable.Exception
执行异常(RuntimeException) 检查异常(CheckedException)
Error是什么意思呢?
这个很好理解,就是错误的意思,一般指与虚拟机相关JVM相关(如系统崩溃、虚拟机错误、动态链接失败),这种错误无法恢复或者不可捕获,后果是导致应用程序中断。
Exception就是异常了,通常来说就是你能够捕获到的异常。

这个异常又分两大类(RuntimeException)(CheckedException)。

所有的CheckedException异常都是可以被处理(修复)的异常,所以Java程序必须显式处理。

这就是我们常见的处理异常方式

Checked处理方式有如下两种:

1当前方法明确知道如何处理该异常,程序应该使用try...catch块来捕获该异常,格式就是

try{

代码块

}

catch(异常名)

{

代码处理块(简单来说就是处理try里面的代码块或者打印异常信息)

}

finally

{

使用finally回收资源

}

catch块进行说明:在Java7中新增的catch中可以使用多异常捕获,之间用|表示.访问异常信息也有常用的方法:

getMessage():返回该异常的详细描述字符串。

printStackTrace():将该异常的跟踪栈信息输出到标准错误输出。

printStackTrace(PrintStream s):将该异常的跟踪栈信息输出到指定输出流。

getStackTrace():返回该异常的跟踪栈信息。

finally块进行说明显示回收,这个地方一定会执行。这里要讲一下,回收的可是物理资源,就是数据库连接、网络连接和磁盘文件等,这些资源都必须显示回收。

重点:这有经常会跟垃圾回收机制做个比较。垃圾回收机制是收堆内存中对象所占用的内存。而栈是Java自己释放掉为该变量所占用的内存空间。

2当前方法不知道如何处理这种异常,应该在定义该方法时声明抛出异常。

Runtime处理方式就比较灵活了,无序显示抛出异常,如果要捕获异常,也可以使用try...catch块来实现。

throws声明抛出异常,如果该异常不知道如何处理,那就向上级抛出,如果到了main这一级也不知道如何抛出的话,也可以用throws声明。main申请之后,只会把该异常抛给VM来处理,JVM处理方法就是,打印异常栈信息,并终止程序运行,这个时候的结果就是异常自动结束。总结一下方法用throws进行声明,跟catch类是,可以抛出多个异常多个异常可以用。

如果你程序有业务要求,你当然也可以自已抛出异常,我们往往通过throw来抛出异常。

转载于:https://www.cnblogs.com/linjingjia/p/7198266.html

你可能感兴趣的文章
hdu 1728 逃离迷宫
查看>>
HTML5与CSS3权威指南之CSS3学习记录
查看>>
docker安装部署
查看>>
AVL树、splay树(伸展树)和红黑树比较
查看>>
多媒体音量条显示异常跳动
查看>>
运算符及题目(2017.1.8)
查看>>
React接入Sentry.js
查看>>
ssh自动分发密匙脚本样板
查看>>
转 小辉_Ray CORS(跨域资源共享)
查看>>
Linux安装postgresql
查看>>
MyBatis启动:MapperStatement创建
查看>>
【 全干货 】5 分钟带你看懂 Docker !
查看>>
[转]优化Flash性能
查看>>
popStar手机游戏机机对战程序
查看>>
Java Web项目结构
查看>>
lambda表达式树
查看>>
二次注入原理及防御
查看>>
会话记住已登录功能
查看>>
Linux内核分析——可执行程序的装载
查看>>
儿子和女儿——解释器和编译器的区别与联系
查看>>