黑马程序员技术交流社区
标题:
异常处理
[打印本页]
作者:
--_.Is’攸稀
时间:
2013-11-2 15:23
标题:
异常处理
本帖最后由 --_.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里面的范围是怎么定的?
作者:
~﹏~
时间:
2013-11-2 15:39
在JAVA中如果出现异常,会停止你的逻辑处理,然后直接抛出到上一层,直到抛出到控制台,我不太理解你说的try的范围是怎么定的,但是你只需要记得,没有try你的程序如果出现错误,比如参数错误,程序就废了,所以你得尽可能考虑到所有的问题!谢谢!
作者:
寻找资拥。
时间:
2013-11-2 16:13
首先你要分析一下你的代码,在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{}里面通常放,可能会出错的代码。
个人理解,希望能对你有所帮助。
作者:
零下五度的水
时间:
2013-11-2 16:14
1.你可以理解成你写的程序被默认包在了一个很大的try块中,如果出现的异常没有被捕获,就会跳出这个try块,所以程序就不往下运行了
2.try的范围越小越好,因为try块是用速度换安全性的一种做法,最好是哪一句可能会抛异常就单try那一行代码,当然你要是做练习嫌麻烦全包起来也无所谓
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2