黑马程序员JAVA 110---120 小结

------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处理.

你可能感兴趣的:(JAVA视频笔记)