黑马程序员-----------JAVA基础-------异常机制
来源:互联网 发布:怎样加入淘宝网全球购 编辑:程序博客网 时间:2024/05/29 04:37
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
异常机制
1 异常:程序在运行时出现的不正常情况。java将这种情况抽取并封装成类即Exception和Error类。
Throwable------>所有错误和异常的超类。
|--Error------> 对于严重的问题用Error类表示,一般不用编码进行处理。
|--Exception------------->对于非严重的问题用Exception表示,一般需要处理(RuntimeException除外)。
2 异常的处理
异常有两种处理方式:一种是try catch代码块在内部处理;一种是用throws抛出异常让之后调用此方法的人去处理。
一些常见的处理方式:
1)String getMessage() --->异常名称;2)String toString() --------->异常名称:异常信息3)void printStackTrace()------>异常名称:异常信息:异常出现位置(默认处理方式)。3 throws
public int div(int a , int b) throws Exception
{ .......}在方法上通过throws声明该功能可能会出现某些问题,调用者在调用函数时就必须要处理(或try或抛(throw))。
注:
1.异常声明时最好声明具体,这样在处理的时候也可以有更具体的处理方式。
2. 一个方法可能会抛出多个异常,此时就应该对应多个catch()块,由于异常可能会有继承关系,应该把父类的异常放在catch块的后面。
3.处理方式最好具体,在很对情况下,捕捉到异常后需要对其包装再抛出新的可以处理的异常。
4.自定义异常
在项目中会出项特定的异常问题,此时就需要自定义异常。
1.异常必须继承Exception或它的子类;
2.异常初始化时可以调用父类的构造函数;
3 函数内部出现throw 抛出异常对象,需要处理(或try或抛)。
class FuShuException extends Exception{ private String massage; public FuShuException(String massage) { super(massage); }}5.throw 和throws的区别
1 throws用在函数上,throw用在函数内;
2 throws 后面跟的是异常类(可以抛出多个异常类,用逗号隔开),throw后面跟的是异常对象;
3 函数内有throw抛出异常对象,函数上需要声明throws 。(有一个类型的异常除外:RuntimeException)。
6 RuntimeException
Exception中有一个特殊的异常类RuntimeException(运行时异常)。函数内如果抛出次异常,函数上不需要throws声明。
如果声明了,调用者也可以不对其进行处理。
因为RuntimeException异常如果发生就希望程序自然停止,然后由程序员对代码进行修改。
所以如果我们定义异常时,希望异常发生时不进行继续的运算,就可以让异常继承自RuntimeException。
由此我们得到异常的分类:
1 编译时被检测的异常(需要throws声明);
2 运行时异常,编译时不进行检测(RuntimeException)。
class NoValueException extends RuntimeException{NoValueException(String message){super(message);}}interface Shape{void getArea();}class Rec implements Shape{private int len,wid;Rec(int len ,int wid)//throws NoValueException{if(len<=0 || wid<=0)throw new NoValueException("出现非法值");this.len = len;this.wid = wid;}public void getArea(){System.out.println(len*wid);}}class Circle implements Shape{private int radius;public static final double PI = 3.14;Circle(int radius){if(radius<=0)throw new NoValueException("非法");this.radius = radius;}public void getArea(){System.out.println(radius*radius*PI);}}class ExceptionTest1{public static void main(String[] args) {Rec r = new Rec(3,4);r.getArea();Circle c = new Circle(-8);System.out.println("over");}}
7 异常处理语句
处理语句有三种形式:
1. try<span style="font-family: Arial, Helvetica, sans-serif;">{ 放置可能会抛出异常代码;</span>
}catch(捕捉到的异常对象如:Exeption e){ 异常处理语句;}2. try{}catch(){}finally{ 存放一定会执行的代码,一般可以用于释放计算机资源;}3. try{}finally{}8 异常在子父类覆盖中的体现:
1.子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,这只能跑出父类方法的异常或者其子类。
2. 如果父类方法抛出多个异常,那么子类的覆盖方法只能抛出父类异常的子集。
3 如果父类方法没有异常抛出,那么子类的覆盖方法也不能抛出异常。如果该方法确实可能抛出异常,只能在内部try-catch处理,不能声明。
9 总结
异常时对问题的描述,对问题进行对象的封装。
异常体系
Throwable
|--Error
|--Exception
throws和thorw的区别:一个对象一个类,一个函数内一个函数外,出现throw需要声明throws,RuntimeException除外。
异常的好处:
1 将问题进行了封装;
2.将正常的流程代码和问题处理代码分离,方便阅读。
异常处理机制:或抛throws 或try;
抛出多个异常需要catch多个,父类异常放在后面;
3 catch的异常还是无法处理时可以在catch代码块里继续抛出新的异常。
- 黑马程序员-----------JAVA基础-------异常机制
- 黑马程序员-【JAVA基础】-异常处理机制
- 黑马程序员---Java基础(异常机制)
- 黑马程序员——JAVA基础之异常处理机制
- 黑马程序员——Java基础:异常处理机制
- 黑马程序员——java基础(异常机制、包)
- 黑马程序员——Java基础---异常处理机制
- 黑马程序员——Java基础 异常机制 (复习)
- 黑马程序员——Java基础异常处理机制
- 黑马程序员-java基础 异常
- 黑马程序员JAVA基础-异常
- 黑马程序员--Java基础--异常
- 黑马程序员-->Java基础-->异常
- 黑马程序员--java基础--异常
- 黑马程序员--------------java基础----------------异常
- 黑马程序员 Java基础 异常
- 黑马程序员-----Java基础-----异常
- 黑马程序员:JAVA异常处理机制
- 字节码资料2:
- hadoop——配置eclipse下的map-reduce运行环境
- 关于startActivityForResult()
- 问题提出:Java为什么可以跨平台???
- cuda初学-02(大部分转载,小部分总结)
- 黑马程序员-----------JAVA基础-------异常机制
- hadoop——在命令行下编译并运行map-reduce程序
- RequireJS进阶(一)
- Vector的用法和操作
- javascript设计模式理论和示例深入分析(上)
- RequireJS进阶(二)
- hadoop-初学者写map-reduce程序中容易出现的问题
- 字节码的资料3:
- 《C标准库》——之<ctype.h>