学一下,java的异常吧。。。。
异常需要掌握的几个点哈
- 什么是异常
- 异常体系结构
- java异常处理机制,如何处理异常
- 怎么自定义异常
什么是异常
异常:
异常是指程序运行过程中遇到的各种问题:比如文件找不到、用户输入错误等等,这些异常导致程序崩溃。
因此我们要学会如何处理异常
异常的分类:
- 编译时异常:程序员预见不了,捕获即可。
- 运行时异常:程序员可以预见,必须避免,作为程序员一定要避免运行时异常,很丢人的。程序员重点关注
- 错误:不受程序员控制的,错误一般都是虚拟机层面的错误,jvm处理
Throwable类有两个直接子类:
(1)Exception:出现的问题是可以被捕获的
(2)Error:系统错误,通常由JVM处理
被捕获的异常分类:
(1)Check异常: 派生自Exception的异常类,必须被捕获或再次声明抛出。是程序员不可遇预见的,用用户导致的异常。
(2)Runtime异常:派生自RuntimeException的异常类。使用throw语句可以随时抛出这种异常对象 throw new ArithmeticException(…);。程序员是可以预见的,程序本身错误导致的异常,必须避免。
异常体系结构
对于错误error,我在开发时基本都碰不到,除非哪天你的程序栈溢出了或者是内存溢出了。
对于异常,编译时异常我们通常只要捕获就可以了,运行时异常必须在程序上线前避免,运行时异常不能容忍。平时程序员遇到最多的都是运行时异常。
- error:error类对象是由jvm虚拟机生成并抛出,比如内存溢出、栈溢出。当出现error异常时,一般虚拟机都会终止线程的运行。程序原不可预见,交给虚拟机管
- 编译时异常:由程序员抛出,并且程序中必须捕获这些异常。程序原不可预见,是必须捕获的异常
- 运行时异常:运行时异常一般都是由程序的逻辑错误导致的,程序员必须避免这些错误的发生。程序员可预见,是必须避免的异常
如何处理异常
捕获异常:try{}catch(){}
将有可能出现异常的代码放在try{}中,catch()用来捕获异常(可以有多个catch块),finally{}可以不写(无论异常出不出现,都会执行finally)。
ctrl+alt+T:选中对应的代码块,可以自动帮助我们来选择对应的块。我感觉java实在是太好了,解决了程序员的双手
抛出异常:throws throw。编译时异常或者运行时异常可以手动抛出。
如何自定义异常
自定义异常。在实际开发中,很常用。
一般实现自定义异常都是,定义一个抽象类继承Exception类,然后其他自定义异常类继承抽象类
一般实现自定义异常,只需要在里面定义一些属性和方法。属性包含:自定义异常的msg属性。方法包含:自定义异常构造函数(方便throw new)、