---------------------- android培训 、java培训 、期待与您交流! ----------------------
异常就是程序在运行时出现的不正常情况.
异常的由来.问题也是现实生活中一个具体的事物,也可以通过JAVA的类的形式进行描述,瓶封装成对象.
其实就是JAVA对不正常情况进行描述后的对象体现.
对于问题的划分,分两种,:一种是严重的问题,一种是非严重的.
对严重的,JAVA通过ERROR类进行描述,
对于Error一般不编写针对性的代码对其进行处理.
对于非严重的JAVA通过Exception类进行描述.对于 Exception可以全县针对性的处理方式处理.
1. 异常的处理.
java提供了特有的语句进行处理.
try
{
需要被检测的代码.
}
catch(异常类 变量)
{
处理异常的代码(处理方式)
}
finally
{
一定会执行的语句.
}
throws Exception//在功能上通过throws的了声明了该功能有可能会出现的问题.
异常:
是什么?是对问题的描述.将问题进行对象的封装.
异常体系:
Throwable
又分为Error和Exception
其中Exception中RuntimeException比较特殊.
异常体系特点:
异常体系中所有类以及建立的对象都具备可抛性.\
也就是说可以被throw和throws关键字所操作.
throws和throw的区别,
throws使用在函数上,throw使用在函数内.
throws后面跟异常类.可以跟多个,用逗号隔开.
throw后跟的是异常对象.
RuntimeException运行时异常
在函数内抛出该异常,函数上可以不用声明的,编译一样通过
如果在函数上声明了该异常.调用者可以不用进行处理.编译一样通过.
自定义异常extends Exception
因为父类中已经把异常信息的操作都完成了,所以子类只要在构造时,将异常信息传递给父类通过super语句.那么就可以直接通过getMessage 方法获取定义异常信息.
自定义异常时:如果该异常的发生,无法在继续进行运算.就让自定义异常继承RuntimeException
当要定义自定义异常的信息时,可以使用父类已经定义好的功能,异常信息传递给父类的构造函数.
class MyException extends Exception
{
MyException(String message)
{
super(message);
}
}
异常处理能让正常流程代码和问题代码分离.
对多异常处理:
对于异常分两种.
finlly代码块:定义一定执行的代码,通常用于关闭资源.
当函数内容有throw异常对象,并末进行try处理.必须要在函数上声明.否则编译失败.
注意,RuntimeException除外,也就说如果函数内抛出RuntimeException异常,函数上可以不用声明.
如果函数声明了异常,调用者需要进行处理.处理方法可以throws 可以try.
异常有两种
1. 编译时被检测异常.
a) 该异常在编译时如果没有处理.那么编译失败,
b) 该异常被标识,代表这可以被处理
2. 运行时异常(编译时不检测).
a) 在编译时,不需要处理,编译器不检查.
b) 该异常的发生,建议不处理,让程序停止,需要对代码进行修正.
异常处理的三种格式.try和catch和finally第二种try和catch,第三种try和finally
System.exit(0); 系统退出,jvm结束.
多个 catch,父类的catch放到最下面.
如果该异常处理不了,但并不属于该功能出现的异常.
可以将异常转换后,在抛出和该功能相关的异常.
或者异常可以处理.当需要将异常产生的和本功能相关的问题提供出去,让调用者知道,并且处理.也可以捕获异常处理后转换新的异常抛出.
异常在子父类覆盖中的体现:
1. 子类在覆盖父类时,如果父类的方法抛出了异常,那么子类的覆盖方法,只能抛出父类的异常或者父类异常的子类或者不抛.
2. 如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集.
3. 如果父类或者接口方法中没有抛出异常,那么子类在覆盖方法时,也不可以抛出异常,只能处理.
异常的好处:
1. 将问题进行封闭.
2. 将正常流程代码和问题代码相分离,方便于阅读.
被不同的修饰符修饰后在不同的目的地访问权限总结:
public protected default private
同一个类中 可以 可以 可以 可以
同一个包中 可以 可以 可以 不可以
子类中 可以 可以 不 不
不同包中 可以 不 不 不
---------------------- android培训 、java培训 、期待与您交流! ----------------------