Java教程

JAVASE 学习笔记(面向对象------异常机制)

本文主要是介绍JAVASE 学习笔记(面向对象------异常机制),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Error 和Exception的区别

ERROR:程序无法处理,出现时JVM会终止线程。

Exception:通常情况下是可以被程序所处理的,并且在程序中应该尽可能去处理这些异常。

异常指的是程序运行中出现的不期而至的各种状况如:

1.输入不符合要求

2.文件不存在或者格式不对

3.读取的数据库是空的

4.内部或者硬盘满了......等等

需要掌握的三种异常类型:

RuntimeException:编译通过,运行时才会被发现。

一般由程序员写代码时出现的逻辑错误引起的异常,在程序中可以选择捕获处理

 I/O Exception (非运行时异常)

 ERROR://错误不是异常(编译也能通过,不好预见)

ERROR通常由JAVA虚拟机生成并抛出

①Java虚拟机的堆溢出或者栈溢出时,将会出现OutOfMemoryError

②虚拟机执行应用时,类定义错误:NotClassDefFoundError、链接错误(LinkageError)

 

异常体系结构:

捕获异常和抛出异常:

五个关键词:try、catch、finally、throw、throws

try:

监控区域,里面放的是可能出错的(需要检查异常)的语句

catch:

①捕获异常,并在catch中写报错信息

 e.printStackTrace();语句可以打印出错误的栈信息 ,也可以自己手动用S.out写报错内容。

不过一般处理异常时不会简单的打印出异常,而是在catch中增加代码处理异常

②catch中可以用System.exit(1);语句直接来结束程序

③catch语句可以写多个来捕获多个异常,但从上到下只能执行一条,所以写的时候范围由小到大

从具体的Exception——>Exception——>Throwable(最大的范围,包含所以异常和错误)

写反了会报错

finally:

用于处理善后工作,例如在IO流中关闭资源。

其中try和catch是必须要有的,finally可以不写

PS:无论异常是否被捕获,finally都会被执行 

throw:(运行时异常)

主动的抛出异常,一般在方法中使用。

假设方法中处理不了这个异常。在方法中抛出异常,让调用该方法的对象来捕获异常。

程序本身就会报出异常的类型,用Throw可以选择 异常的类型。

抛出异常时程序就停止了,但是方法中的异常抛出可以在main函数中用try-catch函数接住,处理掉,这样就可以让程序不终止。

throws:

如果方法中的throw在方法中就被try-catch接收,则不需要用throws关键词

而在方法中的异常没有被try-catch接受,则需要在方法方法的声明处通过关键词    throws +要抛出的异常   来给到方法的调用者,然后在方法的调用者中被try-catch接收

用try-catch 捕获异常:

例①

除数为0时报出异常.ArithmeticException

 

 

快捷键:ctrl+alt+t

自定义异常:

 步骤:

1.自定义异常类

用toString方法来异常打印信息!!!

2.在方法中通过throw关键词抛出异常对象

3.如果在当前抛出异常的方法中处理异常,则使用try-catch语句捕获并处理

    否则在方法的声处通过throws关键词指明要抛出的异常给 方法调用者,继续进行下一步操作

此例中,用的是后者,即用了throws关键词,在方法的调用者中接收异常

 

4.在出现异常的方法调用者中捕获并处理异常:

 

a=11时的打印结果:

 异常总结:

1.处理Runtime Exception主要靠逻辑去合理规避,同时辅助try-catch处理

2.多重catch块后,可以加一个catch(Exception)来处理可能会被遗漏的异常

3.尽量添加finally语句块去释放占用的资源IO、Scanner

4.尽量去处理异常,而不是简单地调用printStackTrace()去打印输出

这篇关于JAVASE 学习笔记(面向对象------异常机制)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!