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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张昊镭 黑马帝   /  2012-4-8 17:58  /  2784 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

第九天的最后一个视频将异常练习的时候,出现了一个把异常类对象抛两次的动作,但是抛完之后,在捕获的时候就没讲代码怎么写了,视频的代码太长了,我写个简单的帮我讲解下:
class SiJi extends Exception
{
    SiJi(String s)
    {
        super(s);
    }
}
class Computer
{
    private int state=2;
    public void run()throws SiJi
    {
        if(state==2)
            throw new SiJi("死机了");
    }
}
class Person
{       
        public static void main(String[] args)
        {
                Computer c=new Computer();
                try
                {
                        c.run();
                }
                catch(SiJi s)
                {
                        System.out.println(s.toString());
                }
        }
}
呃,我的理解是Computer抛出了个死机异常,Person捕获了这个异常,并处理了,就是打印个异常信息.
这个只是抛出一次,捕获一次吧,可我想连续抛出两次,再捕获,那捕获那的代码该怎么写?比如:
class SiJi extends Exception
{
    SiJi(String s)
    {
        super(s);
    }
}
class Computer
{
    private int state=2;
    public void run()throws SiJi
    {
        if(state==2)
            throw new SiJi("死机了");
    }
}
class Teacher
{
        public void use()throws SiJi
        {
                Computer c=new Computer;
                try
                {
                        c.run();
                }
                catch(SiJi s)
                {
                        throw s;
                }
        }
}
class Person
{       
        public static void main(String[] args)
        {
                Teacher t=new Teacher();
                try
                {
                        t.use();
                }
                catch()
                {

                }
        }
}
那红色的那段代码,我该怎么捕获Teacher里面的那个s,圆括号里面如何写呢,如果代码写错了请指正.

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

6 个回复

倒序浏览
public static void main(String[] args)
        {
                Teacher t=new Teacher();
                try
                {
                        t.use();
                }
                catch(SiJi s)
                {
                          写你要怎么处理 的代码
                }
这个SIJi  异常是自己定义的     你new Teacher();
对象 了  而这个对象抛的SiJi异常  你就捕获这个异常    异常捕获问题  把握一点   你调用了谁的  谁抛的   都是一一对应的  他抛什么  你捕获什么

评分

参与人数 1技术分 +1 收起 理由
岳民喜 + 1

查看全部评分

回复 使用道具 举报
使用catch捕获你的程序执行中所要抛出的异常。。当然你可以捕获他的父类也行。。。这算是一种多态的。。。。catch()里面就是定语一个异常类型变量。。。当程序执行到你所定义的异常类型时就会被捕获。。。把异常赋给你定义的变量。。通过它你也做一些自己需要的事。。。。
回复 使用道具 举报
ry
{
        需要被检测的代码;

}
catch(异常类 变量)//catch(Exception e)e是Exception类型的应用变量。

                        //Exception e=new ArithmeticException();
{
        处理异常的代码:(处理方式)

}
finally
{
        一定会执行的语句;
}

这样清楚了吧   记点笔记就可与了的  呵呵
回复 使用道具 举报
上面的开头是try的  我少了个t,不好意思
回复 使用道具 举报
贠(yun)靖 发表于 2012-4-8 18:06
public static void main(String[] args)
        {
                Teacher t=new Teacher();

果然是这样,非常感谢
回复 使用道具 举报
pray 高级黑马 2014-4-26 06:12:46
7#
支持你加分
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马