黑马程序员技术交流社区
标题:
还是关于抛出和捕获的问题,有点蛋疼
[打印本页]
作者:
张昊镭
时间:
2012-4-8 17:58
标题:
还是关于抛出和捕获的问题,有点蛋疼
第九天的最后一个视频将异常练习的时候,出现了一个把异常类对象抛两次的动作,但是抛完之后,在捕获的时候就没讲代码怎么写了,视频的代码太长了,我写个简单的帮我讲解下:
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,圆括号里面如何写呢,如果代码写错了请指正.
作者:
贠(yun)靖
时间:
2012-4-8 18:06
public static void main(String[] args)
{
Teacher t=new Teacher();
try
{
t.use();
}
catch(SiJi s)
{
写你要怎么处理 的代码
}
这个SIJi 异常是自己定义的 你new Teacher();
对象 了 而这个对象抛的SiJi异常 你就捕获这个异常 异常捕获问题 把握一点 你调用了谁的 谁抛的 都是一一对应的 他抛什么 你捕获什么
作者:
郑苑东
时间:
2012-4-8 18:12
使用catch捕获你的程序执行中所要抛出的异常。。当然你可以捕获他的父类也行。。。这算是一种多态的。。。。catch()里面就是定语一个异常类型变量。。。当程序执行到你所定义的异常类型时就会被捕获。。。把异常赋给你定义的变量。。通过它你也做一些自己需要的事。。。。
作者:
莫运飞
时间:
2012-4-8 18:17
ry
{
需要被检测的代码;
}
catch(异常类 变量)//catch(Exception e)e是Exception类型的应用变量。
//Exception e=new ArithmeticException();
{
处理异常的代码:(处理方式)
}
finally
{
一定会执行的语句;
}
这样清楚了吧 记点笔记就可与了的 呵呵
作者:
莫运飞
时间:
2012-4-8 18:18
上面的开头是try的 我少了个t,不好意思
作者:
张昊镭
时间:
2012-4-8 18:19
贠(yun)靖 发表于 2012-4-8 18:06
public static void main(String[] args)
{
Teacher t=new Teacher();
果然是这样,非常感谢
作者:
pray
时间:
2014-4-26 06:12
支持你加分
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2