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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© --_.Is’攸稀 中级黑马   /  2013-11-2 15:23  /  1041 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 --_.Is’攸稀 于 2013-11-2 16:26 编辑

class Demo{        int div(int a,int b)
{               
return a/b;      
}
}
class ExceptionDemo{        
public static void main(String[] args)  {
                       Demo d =new Demo();               
try{               
int x=d.div(4, 0);               
System.out.print("x="+x);               
}                                             
           
catch(Exception e)
{                        
     
System.out.println("除0啦");                 
  }                                        
  System.out.println("over");     
   }
}
//有这个try{}catch(){}跟没有的区别是有的话可以自己处理这个异常,然//后继续执行,没有的话就程序出错误提示后就直接停了这样嘛吗?   
//还有就是try里面的范围是怎么定的?   

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

3 个回复

倒序浏览
在JAVA中如果出现异常,会停止你的逻辑处理,然后直接抛出到上一层,直到抛出到控制台,我不太理解你说的try的范围是怎么定的,但是你只需要记得,没有try你的程序如果出现错误,比如参数错误,程序就废了,所以你得尽可能考虑到所有的问题!谢谢!

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
首先你要分析一下你的代码,在Main方法里,创建一个Demo对象,当d对象调用Div方法的时候,把4和0传给了a和b,就运算了,运算的时候就会出现问题。这个问题叫:java虚拟机识别的算术问题(AritchmetException)。并且把这个问题封装成了对象(因为这个对象本身就有描述),之后把这个对象丢给了调用者(d)。这个时候,如果你不用try{}catch(){}的话,这个问题抛出来“没人”检测到,主函数(main方法)没办法处理,就会抛给虚拟机,虚拟机就会默认处理方式,就会导致程序无法运行。而你用了try{}catch(){},问题就会被检测到,然后丢给catch,(catch:捕捉)。catch里面带的参数,就是声明错误的类型,而Exception相当于所有能处理的异常的父亲,(Exception e =new AritchmeticException)相当于,父类引用指向子类对象。而问题被处理时,错误代码后面的代码将不会执行,而出了Try范围外的代码还是会照常执行。
try{}里面通常放,可能会出错的代码。
个人理解,希望能对你有所帮助。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
1.你可以理解成你写的程序被默认包在了一个很大的try块中,如果出现的异常没有被捕获,就会跳出这个try块,所以程序就不往下运行了
2.try的范围越小越好,因为try块是用速度换安全性的一种做法,最好是哪一句可能会抛异常就单try那一行代码,当然你要是做练习嫌麻烦全包起来也无所谓

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

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