java异常
异常:Exception(例外):程序在运行过程中出现的不正常现象
不正常:
(1)编译阶段,程序报错-修改代码
(2)运行阶段,程序报错-处理异常-比较严重
练习:输入一个整数,打印这个数的平方
如何解决此问题?今天讲解的内容:异常处理
why(为什么要处理)
异常如果不进行处理,危害在:(1)程序异常停止;(2)得不到友好的提示
how(如何去处理)
如何进行异常处理?关键词
try:将可能出现异常的代码放在try中
catch:将异常出现后,需要处理的代码放在catch中
try中的代码是业务代码,如果没有异常,不执行catch
如果有异常,略过try中剩余代码,转而执行catch
执行完毕后,程序继续向下执行,不会终止。
几个额外问题
-
Java中有哪些种类的异常呢?
NumberFormatException:数值格式异常
ArithmeticException:数学计算异常(比如除数为0)
ArrayIndexOutOfBoundsException:数组越界异常
NullPointerException:对象未分配内存异常 -
try-catch配对问题
一个try后面至少跟一个catch,可以跟多个catch,用来处理不同的异常。
-
异常处理有时候可以解决一些有趣的问题
输入一个整数,打印这个数的平方;如果输入格式不对,反复出现输入框,直到输入格式正确,打印平方 -
和try、catch一起使用的还有一个关键词:finally
finally代码块原理:finally加在catch后面,表示不管是否出现异常,都需要执行的代码
try-catch之后,可以有finally,也可以没有finally
打开文件
处理文件
关闭文件
finally块,确保了程序的安全性。
疑问
:finally块实际上是可有可无?不是!只要有try,不管try里面发生了循环跳出、函数返回等,配套的finally一定会执行!从底层确保了需要要执行的代码一定会执行(安全性)
异常处理三大词: try – catch -finally
1 1…N 0,1
*** ** *
关键词
异常处理另外两个关键词:throws、throw:抛出
原理
异常的原理:
try{ … } catch(Exception e){ … }
原理:try里面的代码,如果出现异常,系统底层将其包装成一个对象,抛出。被catch块捕获,赋值给参数e,并执行catch块
throw和throws的区别
1、throw:在函数中抛出一个实际的异常对象
2、throws:在函数定义上标记该函数可能抛出异常
3、标记了throws的函数,在调用时,原则上必须用try包围,并编写catch代码处理可能出现的异常(还有非原则情况),这叫做就地捕获;或者 将异常再次向前抛出
4、throws和throw一般用于自定义异常信息并要求从函数中返回的情况。为了不影响函数的正常返回,将自定义异常的信息用异常包装,throw抛出,函数用throws标记。
————————————————————
异常处理三大词: try – catch -finally
1 1…N 0,1
*** ** *
异常抛出两大词: throw throws
** *
异常处理使用场合更多。