一、访问修饰符
二、静态(static)
三、内部类
当描述事物时,事物的内部还有事物,该事物用内部类来描述。因为内部事物在使用外部事务的内容。
局部内部类不能定义静态成员非静态,没对象不运行。
黑马程序员_异常_学习笔记
---------------------- android培训、java培训、期待与您交流! ----------------------
异常:就是程序在运行时出现不正常情况。
异常由来:问题也是现实生活中具体的事物,也可以通过java类的形式
描述,封装成对象。 其实就是java对不正常情况描述后的对象
体现。
对于问题的划分:一种是严重的问题,一种是非严重的问题
对于严重的,java通过Error类进行描述。
对于Error,一般不编写针对性的代码对其进行处理。
对于非严重的,java通过Exception类进行描述。
对于Exception可以使用针对性的处理方式进行处理。
无论Error或者Exception都具有一些共性内容。
比如:不正常情况的信息,引发原因等。
抽取出的父类:Throwable
---Error
---Exception
1,异常的处理:
java提供了特有的语句(可不全写)进行处理
try
{
需要被检测的代码
}
catch(异常类 变量)
{
处理异常的代码;(处理方式)
}
finally
{
一定会执行的语句;
}
2,对捕获到的异常对象进行常见方法操作。
String getMessage();
------------------------------------------------------
throws Exception:在功能上通过throws的关键字声明了该功能有可能
出现问题。
------------------------------------------------
对多异常的处理。
1,声明异常时,建议声明更为具体的异常,这样可以处理得更具体。
2,对方声明几具异常,就对应有几个catch块。
如果多个catch块中的异常出现继承关系,父类异常catch块放在最
下面。不要定义多于的catch块。
在进行catch处理时,catch中一定要定义具体处理方式。
不要简单定义一句 e.printStackTrace(),
也不要简单的就书写一条输出语句。
PS:java为了增强阅读性,把父类名作为子类后缀名
函数中只要有异常发生,则程序立即结束,所以异常一次只能处理一个
因为项目中会出现特有的问题,
而这些问题并未被java所描述并封装对象。
所以对于这些特有的问题可以按照java的对问题封装的思想,将特有的
问题进行自定义的异常封装。
---------------------------------
自定义异常。
需求:在本程序中,对于除数是负,也视为是错误的是无法进行运算的。
那么,就需要对这个问题进行自定义描述。
当在函数内部出现了throw抛出异常对象,就必须要给对应的处理动作。
要么在内部try catch处理
要么在函数上声明让调用者处理。
一般情况下,函数内出现异常,函数上需要声明。
发现打印的结果中只有异常的名称,却没有异常的信息。是因为自定义
异常并未定义信息。
@@@@@@@@@@@@@@@@@@
如何定义异常信息呢?
因为父类中已经把异常信息的操作都完成了。
所以子类只要在构造时,将异常信息传递给父类通过super语句
即可。这样就可以直接通过getMessage方法获取自定义的异常信息。
自定义异常:
必须是自定义类继承Exception.
继承Exception的原因:
异常体系有一个特点,因为异常类和异常对象都被抛出。
他们都具备可抛性,这个可抛性是Throwable体系中独有的特点。
只有这个体系中的类和对象才可以被throws和throw操作。
---------------------------
throw 和 throws 的区别:
1,throws使用在函数上(函数名后)。
2,throw使用在函数内(看09ExceptioDemo)。
throw 后跟的是异常对象。
throws 后面跟的异常类(名),可以跟多个,用逗号隔开。
------------------------------
------------------------------
Exception 中有一个特殊的子类异常RuntimeException 运行时异常。
如果在函数内容中抛出该异常,函数上可以不用声明,编译一样
通过。
如果在函数上声明了该异常,调用都可以不用进行处理,编译
一样通过。
之所以不用在函数上声明,是因为不需要让调用者处理。
当该异常发生,希望程序停止,因为在运行时,出现了无法继续
运算的情况,希望停止程序上,对代码进行修正。
____________________________________________
自定义异常时,如果该异常发生时,无法再继续进行运算,就让自定义
异常继承RuntimeException
对于异常分两种:
1,编译时被检测的异常。
2,编译时不被检测的异常(运行时异常,RuntimeException以及
其子类)
例子:毕老师用电脑上课
开始思考上课中出现的问题
比如:电脑蓝屏,电脑冒烟
要对问题进行描述,封装成对象。
当冒烟发生后,出现讲课进度无法继续。
出现了讲师的问题:课时计划无法完成。
PS:throw出现时,下面不能再写语句,因为抛出时,程序就结束
--------------------------------------------------------------
自定义异常练习程序:
class LanPingException extends Exception
{
LanPingException(String message)
{
super(message);
}
}
class MaoYanException extends Exception
{
MaoYanException(String message)
{
super(message);
}
}
class NoPlanException extends Exception
{
NoPlanException(String msg)
{
super(msg);
}
}
//---------------------------------
class Computer
{
private int state = 3;
public void run() throws LanPingException,MaoYanException
{
if(state==2)
throw new LanPingException("蓝屏了");
if(state==3)
throw new MaoYanException("冒烟了");
System.out.println("电脑运行");
}
public void reset()
{
System.out.println("电脑重启");
}
}
//--------------------------------
class Teacher
{
private String name;
private Computer cmpt;
Teacher(String name)
{
this.name = name;
cmpt = new Computer();
}
public void prelect() throws NoPlanException
{
try
{
cmpt.run();
}
catch (LanPingException e)
{//处理
cmpt.reset();
}
catch (MaoYanException e)
{
test();
throw new NoPlanException("课时无法继续"+e.getMessage());
}
System.out.println("讲课");
}
public void test()
{
System.out.println("练习");
}
}
//------------------------------------------
class ExceptionTest
{
public static void main(String[] args)
{
Teacher t = new Teacher("毕老师");
try
{
t.prelect();
}
catch (NoPlanException e)
{
System.out.println(e.toString());
System.out.println("换老师,或者放假!");
}
}
}
---------------------- android培训、java培训、期待与您交流! ----------------------