A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© zhoubinjian 金牌黑马   /  2016-3-31 01:15  /  377 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Throwable
        -Error
        -Exception
1.异常的处理:
try
{
        需要被检测的代码;
}
catch(异常类 变量)
{
        处理异常的代码:(处理方式)
}
finally
{
        一定会执行的语句;
}

2.对捕获的异常对象进行常见方法操作
getMessage():获取异常信息
toString():异常名称:异常信息
printStackTrace():异常名称,异常信息,异常出现的位置。其实JVM默认的异常处理机制,就是在调用printStackTrace方法,打印异常的栈堆跟踪信息。

在函数上声明异常:便于提高安全性,让调用者进行处理,不处理编译失败。

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


当在函数内部出现了throw抛出异常对象,那么就必须要给对应的处理动作。
1.要么在内部try catch处理。
2.要么在函数上声明调用者处理

一般情况下,函数内出现异常,函数上需要声明

如何定义 异常信息 呢?
因为父类中已经把异常信息的操作都完成了。
所以子类只要在构造时,将异常信息传递给父类通过super语句。
那么就可以直接通过getMessge方法获取自定义的异常信息。

自定义异常:
必须是自定义类继承Exception.

继承Exception的原因:
异常体系有一个特点,因为异常类和异常对象被抛出,他们都具备可抛性,这个可抛性是Throwable这个体系中独有特点。
只有这个体系中的类和对象才可以被throws和throw操作。


class FushuException extends Exception
{
        int num;
        FushuException(String mags,int num)
        {
                super(mags);//因为父类中已经把异常信息的操作都完成了。
//所以子类只要在构造时,将异常信息传递给父类通过super语句。
//那么就可以直接通过getMessge方法获取自定义的异常信息。
                this.num=num;
        }
        public int getNum()
        {
                return num;
        }
}
class ExceptionDemo   // extends Student
{
        public int study(int a,int b)throws FushuException//一般情况下,函数内出现异常,函数上需要声明
        {
                if(b<0)
                        throw new FushuException("出现了负数的情况-----",b);//手动通过throw关键字抛出一个自定义对象。
                //当在函数内部出现了throw抛出异常对象,那么就必须要给对应的处理动作
               
                return a/b;
               
        }
}
class Demo
{
        public static void main(String[] args)
        {
                ExceptionDemo c=new ExceptionDemo();
                try
                {
                        int d=c.study(4,-1);
                System.out.println("d="+d);
                }
                catch (FushuException e)
                {
                        System.out.println(e.toString()+"这个负数是:"+e.getNum());
                        System.out.println("chu xian fu shu");
                }               
                System.out.println("over");
        }               
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马