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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曾浩 中级黑马   /  2012-10-6 17:29  /  1653 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 曾浩 于 2012-10-7 17:52 编辑

public class TestException {
/**
  * @param args
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub
  
         Rec zz = new Rec(-3,4);
         zz.getArea();
         System.out.print("hahha");
}
}
class FuException extends RuntimeException{
FuException(String msg){
  super(msg);
}
}
interface Sharp {
void getArea();
}
class Rec implements Sharp{
  int len,wid;
    Rec(int len,int wid){
     if(len<=0 || wid<=0){
      throw new FuException("fushul");
     }else{
     this.len = len;
     this.wid  = wid;}
    }
public void getArea() {
  // TODO Auto-generated method stub
  System.out.println("mianj="+(len*wid));
  
}

}
程序这样运行则出现了异常 主函数中的输出就不会执行   但是如果在主函数中这样写
try{
       Rec zz = new Rec(-3,4);
         zz.getArea();
         
}catch(FuException e){
  
}
System.out.print("hahha");   
即使出现了 异常 这个主函数的中的输出语句也会执行  
不是说有遇到runtimeexception 的异常 后程序就不往下执行了吗
难道是因为 有try catch处理了的原因吗      

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
不对吧,你用try catch的意义不就是为了 解决异常么,你既然try  catch了  ,所以后面的代码就可以了,
你说的 不能运行,是try代码块里面的,比如

try{
Rec zz=new Rec(3,-4); --------------程序在这里捕获运行时异常, 这句话后面的就不会执行了。
zz.getArea();  
}
catch(FuException e)   //这里就代表你解决了问题,但是你没有做具体操作
{
  
}
System.out.println("hahha");   //既然你问题都解决了,是不是应该让程序继续执行后面的代码了!!!

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
对啊 就是因为有了try catch把它处理了  程序就会继续往下走
回复 使用道具 举报
异常分编译时异常:Exception 和运行时异常:runtimeException。
你写的fuExcetion异常是运行时异常。通常运行时异常的发生会让程序停掉,这种异常编译时不会发生,运行时才会发生。
这种异常不需要用try{} catch{}来处理,而且也没法处理。一旦发生就让程序停掉。
至于你说的异常发生,输出语句还执行是不是用try{} 处理的原因,我就不清楚了。

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马