码迷,mamicode.com
首页 > 其他好文 > 详细

黑马程序员——面向对象 异常

时间:2015-04-16 09:08:22      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:封装   exception   异常   

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

1、异常

异常:程序在运行时出现不正常情况,是对问题的描述,将问题进行对象的封装。
由来:Java对不正常情况进行描述后的对象体现。

  1. 对于严重的问题,Java通过Error类进行描述。

  2. 对于非严重的问题,Java通过Exception类进行描述。

▲Error与Exception(RuntimeException)都有一些共性内容。
异常体系中所有类及建立的对象都具有可抛性,可以被throw与throws关键字操作。

2、异常的处理

try
{
    需要被检测的代码;
}
catch(异常类,变量)
{
     处理方式;
}
finally
{
    一定会执行的语句//System.exit(0);系统退出,jvm结束
}

3、对捕获到的异常对象常见方法操作

  • getMessage() 异常信息
  • toString() 异常名称,异常信息
  • printStackTrace() 异常名称,异常信息,异常出现的位置

4、throws Exception

在功能上通过throws关键字声明该功能可能出现问题。
在函数上声明异常,让调用者进行处理,不处理则编译失败。

5、对多异常的处理

  1. 声明异常时,建议声明更为具体的异常,这样处理可以更具体。
  2. 声明几个异常,就有几个catch,如果多个catch块出现继承关系,父类catch块下放。

6、自定义异常

按Java面向对象思想,将程序中出现的特有问题进行封装。

当函数内部出现了throw抛出异常对象,那么就必须要给对应的处理动作:

  1. 在内部try catch处理。

  2. 在函数上声明让调用者进行处理。

▲自定义异常必须是自定义类继承Exception。

▲继承Exception的原因。

异常类与异常对象都要被抛出,他们都具备可抛性,可抛性是Throwable体系中独有特点,只有这个体系中的类和对象,才能被throw与throws操作。

例:计算程序,除数是0与-1是无法计算,抛出异常
class FuShuException extends Exception
{
    private int value;
    FuShuException()
    {
        super();
    }
    FuShuException(String msg,int value)
    {
        super(msg);//将异常信息super给父类。
    }
    public int getvalue()
    {
        return value;
    }
}
class Demo
{
    int div(int a,int b) throws FuShuException
    {
        if(b<0)
        throw new FuShuException("出现负数",b);
        return a/b;
    }
}
class ExceptionDemo
{
    public static void main (String[] args)
    {
        Demo d = new Demo();
        try
        {
            int x = d.div(4,-9);
            System.out.println("x="+x);
        }   
        catch(FuShuException e)
        {
            System.out.println("错误的负数是"+e.getValue());
        }
    }
}

7、throw与throws的区别

  • throws使用在函数上,后面抛出的是异常类,可用多个逗号隔开。

  • throw使用在函数内,后面跟的是异常对象。

8、Runtime

Runtime与它的子类在函数内抛出,函数上不用声明,如果函数上声明了该异常,调用者不用进行处理。

9、异常在子父类覆盖中的体现

  1. 子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法只能抛出父类的异常或该异常的子类。

  2. 如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。

  3. 如果父类或接口的方法中没有异常抛出,那么,子类在覆盖该方法时,不可以抛出异常。

10、异常有两种

  1. 编译时被检测异常:该异常在编译时,如果没有处理(抛出。try catch),编译失败,该异常被标识,代表可以被处理。

  2. 运行时异常(编译时不检测),在编译时不需处理,该异常发生,不处理,程序停止,需对代码进行改正。

黑马程序员——面向对象 异常

标签:封装   exception   异常   

原文地址:http://blog.csdn.net/ljh138/article/details/45066703

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!