异常处理
什么是异常
异常是组织当前方法或作用域继续执行的问题,在程序终导致程序中断运行的一些指令
异常结构图

Throwable :
可以抛出的东西,比如异常
继承Object类,是JAVA中所有错误或异常的超类(异常最顶层的类)
之后,Error和Exception(重点)
Error是Throwable 的子类,它属于是非常严重的BUG(不是代码语法问题),一般写程序时不管它,也管不了,是系统的内部的错误
Exception:写程序时可能出现的异常就是这个类下的,Exception是Throwable 的子类,它指出了合理的引用程序想要捕获的条件
Exception又分:受检异常(在编译的时候出现异常)和非受检异常 RuntimeException (在运行的时候出现异常)
注:在eclipse编译器中,eclipse会自动编译(保存时编译),所以受检异常在写代码时就会抛出,运行时非受检异常抛出(如果有),异常每个程序员都会有,重点是怎么看异常和排除

运行结果
修改除数报错



处理异常
在开发中,我们需要吧可能出现异常的代码块使用try语句块包裹起来


try与catch关键字
当出现异常的代码块被try语句块包裹起来后,后续的代码(如果有)就会继续执行,这就是抛出异常的概念
catch可以写多个,因为可能不止一个异常存在

代码块中有可能出现的异常都可以写进Catch里
当你不清楚具体的异常类型时,可以用Exception,因为所有的异常类型都是Exception的子类,注意在catch中写多个异常的时候注意影响范围由小到大,从具体(某个异常类型)到大概(Exception),如果大的放前面后续的catch都不会执行
finally语句
不管有没有异常都会执行finally代码块中的代码,只需要写一个

当遇到代码中有return时,一般遇到return就表示当前程序结束,不过当代码在try语句种事,会优先搜索有没有finally并一定执行,所以就算遇到程序中断语句finally还是会执行
printStackTrace()
因为我们不可能去背每个异常类型,所以用这个方法来显示系统抛出的异常类型(在栈中),这样我们就在程序没停住的情况下了解详细的异常类型,这个方法只在代码测试的时候使用,异常排除后要注释掉




throw与throws

throw与throws通常一起使用
throws:在方法的声明上使用的,可以写多个(逗号分开)
throw:在方法内使用,它本身就返回的意思(代码错了不执行了和return有异曲同工之妙),抛出一个异常


浙公网安备 33010602011771号