黑马程序员技术交流社区
标题:
关于异常的问题
[打印本页]
作者:
郑强强
时间:
2012-4-12 22:49
标题:
关于异常的问题
import java.io.*;
class PrintTest
{
public static void main(String args[])
{
int a;
try
{
a=System.in.read();
}
catch(IOException e)
{
e.toString();
return;
}
System.out.println(a);
}
}
import java.io.*;
class PrintTest
{
public static void main(String args[])
{
int a;
try
{
a=System.in.read();
}
catch(IOException e)
{
e.toString();
//return;
}
System.out.println(a);
}
}
这两个程序只是在catch语句中是否含有return语句,这有什么不同吗,一个能运行一个不能,到底为什么呢?
作者:
石好强
时间:
2012-4-12 23:51
楼主下面一个把 return 去掉,就代表着,程序一旦发生异常,也就是 a=System.in.read();这句没有执行成功,a没有被赋值成功,而System.out.println(a);
却依旧要执行,但是此时的a是没有被赋值初始化的,所以你编译时就会出错。
有return,一旦发生异常 不会执行System.out.println(a);
作者:
王永旺
时间:
2012-4-12 23:58
本帖最后由 王永旺 于 2012-4-13 00:00 编辑
如果不加return语句的话,会造成程序在遇到IOException的时候,a中没有数据的情况。所以就无法输出了,当然就会编译错误。
有return 就会使语句跳出循环。
所以注释掉return语句的话,要给a一个初始值。这时候定义int a时给a一个初始值就行,如int 啊= 0;
作者:
邓斌
时间:
2012-4-12 23:59
return 是结束语句。。。
异常发生。catch()捕获。。try{}是没执行的。System.out.println(a); try没执行 a就没赋值。。所以 错误:
Lxi.java:36: 错误: 可能尚未初始化变
System.out.println(a);
^
1 个错误
去掉return.把 System.out.println(a); 放入try{}中也可以的
作者:
黑马-刘昌文
时间:
2012-4-13 10:45
在catch中加了return,代码在遇到异常了就结束了,不会执行后面的代码了,如果不加return,异常捕获后,程序是还可以继续向下执行的!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2