------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
111_面向对象(异常概述)_黑马程序员_Java基础视频
异常机制
异常:就是程序在运行时出现不正常情况.
异常由来:问题也是现实生活中一个具体的事物,也可以通过java的类的形式进行描述,并封装成对象
其实就是java对不正常情况进行描述后的对象体现.
对于问题的划分,两种,一种是严重的问题,一种非严重的问题.
对于严重的java通过Error类进行描述.
对于非严重的java通过Exception类进行描述.
对于Error一般不编写针对性的代码对其进行处理.
ArithmeticException 计算异常
对于Exception 可以使用针对性的处理方式进行处理.
112_面向对象(异常try-catch)_黑马程序员_Java基础视频
113_面向对象(异常声明throws)_黑马程序员_Java基础视频
114_面向对象(多异常处理)_黑马程序员_Java基础视频
异常处理
java 提供了特有的语句进行处理.
try
{
需要被检测的代码;
}
catch(异常类 变量)
{
处理异常的代码:(处理方法);
}
finally
{
一定会执行的语句;
}
3对捕获到的异常对象进行常见方法操作
String getMessage();获取异常信息
在函数上声明异常
便于提高安全性,让调用出进行处理,不处理的可以更具体.
对于异常的处理
1声明异常时,建议声明更为具体的异常,这样处理的可以更具体.
2对方声明几个异常,就对应有几个catch块
如果多个catch块中的异常出现继承关系,父类异常catch块放最下面.
建立在进行catch处理时,catch中一定要定义具体处理方式.
不要简单定义一句e.printStackTrace();
也不要简单的就书写一句输出语句.
异常日志文件.
115_面向对象(自定义异常)_黑马程序员_Java基础视频
-因为项目中会出现特有的问题.
而这些问题并未被java所描述并封装对象.
所有对于这些特有的问题可以按照java的对问题封装的思想.
将特有的问题,进行自定义的异常封装.
自定义异常.
需求 在本程序中,对于除数是-1 也视为是错误的是无法进行运算的.
那么就需要对这个问题进行自定义描述.
当在函数内部出现throw抛出异常对象,那么就必须要给对应的处理动作.
要么在内部try catch处理.
要么在函数上声明让调用者处理.
一般情况在,函数内出现异常,函数上需要声明.
发现打印的结果中只有异常的名称,却没有异常的信息.
因为自定义的异常并未定义信息.
如何定义异常信息呢?
因为父类中已经把异常信息的操作都完成了.
所以子类只要在构造时,将异常信息传递给父类,通过 supervision语句,那么就可以直接通过getMessage
方法获取自定义的异常信息.
自定义异常
必须是自定义类继承Exception.
异常体系有一个特点,因为异常类和异常对象都需要被抛出..
他们都具备可抛性.这个可抛性是throwable这个体系中的独有特点.
只有这个体系中的类和对象才可以被throws和throw操作.
116_面向对象(throw和throws的区别)_黑马程序员_Java基础视频
117_面向对象(RuntimeException)_黑马程序员_Java基础视频
Exception 中有一个特殊的子类异常,RunTimeException 进行时异常
如果在函数内抛出该异常,函数上可以不用声明,编译一样通过.
如果在函数上申明了该异常,调用者可以不用进行处理.编译一样通过..
之所以不用在函数声明,是因为不需要让调用者处理.
当该异常发生,希望程序停止,因为在运行时,出现了无法继续运算的情况,
希望停止程序后,由程序员对代码进行修正.
自定义异常时,如果该异常的发生,无法继续运行运算.
就让自定义异常继承RunTimeException
对于异常分2种.
1编译时,被检测的异常.
2编译时不被检测的异常,(运行时异常,RuntimeException 以及其子类)
ArithmeticException
RuntimeException 的子类比较特殊,在函数内你throw啦,你在函数上不需要申明 throws
118_面向对象(异常-finally)_黑马程序员_Java基础视频
119_面向对象(异常-处理语句其他格式)_黑马程序员_Java基础视频
finally 一般是用来关闭资源.
try{} catch{}finally{} try{}catch{} try{}finally{}
有catch就是解决了问题.
记住第一点:catch是用于处理异常的,如果没有catch就代表异常没有被处理过.
如果该异常是检测时异常,如果没处理,就声明出去,处理了,就catch.
120_面向对象(异常-覆盖时的异常特点)_黑马程序员_Java基础视频
异常在子父类覆盖中的体现.
1子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类
2,如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集.
3如果父类或者接口的方法中,没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常.
如果子类方法发生了异常,就必须就要try处理.