Java 初学者-异常处理
今天学习了什么?
异常的作用:Java提供的异常处理机制,在程序出现不正常的情况下会把不正常的信息输出到控制台。供程序员参考修改。提高程序的健壮性。
生活异常:零件损坏(类模板) 不同地方零件损坏(实例对象)
1.1异常以类和对象的形式存在。
1.指针异常:空指针异常。NullPointerException
2.类型转换异常:ClassCastException
3.算术异常:AirthmeticException
4.
5.Throwable类的个体Message()/printStackTrace()两个方法,所有异常都有。
6.编译时异常(Exception的直接子类):受检异常。所有的异常在编译前必须进行预处理,并非异常在编译阶段发生,所有的异常都是中运行阶段才可能发生。
运行时异常(RunTimeException): 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
7.编译时异常与运行时异常的区别:运行时异常发生概率较高,需要预处理。下雨很可能生病,于是要打伞。
运行时异常:出门被石头砸到。
注:所有异常都发生在运行阶段。
8.Java异常处理方式:
1.throws:抛出异常。(抛给上一级)谁调用我,我给谁。给老板说明。
小王-->经理-->主管-->老板
2.try catch进行异常捕捉。自己解决问题,别人不知道。
注意:如果异常一直上抛,将会终止java程序的执行。
9.注意:只要异常没有捕捉,采用上报的方式,此方法后续代码不执行
try中某一行出现异常,其后续代码不执行
10.如果希望调用者处理使用throws,其它try-catch(编译时异常)
11.查看异常信息,从上往下看,自己的代码。
12.finally语句最后执行且一定执行,必须与try一同出现
13.自定义异常
1.编写一个类继承Exception或RuntimeException
2.提供两个构造方法一个是有参的,一个是无参的
14.压栈在实际中的应用
15.java为什么有些异常throw出去需要在函数头用throws声明,一些就不用?
可以简单地理解checked exception就是要强制你去处理这个异常(不管你throws多少层,你终归要在某个地方catch它)(必须要处理,怕你不返回,所以throws);而runtime exception则没有这个限制,你可以自由选择是否catch。
16.异常与方法覆盖?
重写之后的方法不可以比重写之前的方法抛出更宽泛或更多的方法。
17.
e.printStackTrace();//打印异常追踪的堆栈信息
e.getMessage();//获取异常简单的描述信息,实际是构造方法传进去的参数
明天学习什么?
明天计划学习javaObject类