黑马程序员技术交流社区
标题:
关于编译失败的一个小问题
[打印本页]
作者:
楚轩
时间:
2014-5-25 11:01
标题:
关于编译失败的一个小问题
本帖最后由 楚轩 于 2014-5-25 11:11 编辑
class Demo1
{
public static void main(String[] args)
{
try
{
showExce();
System.out.println("A");
}
catch (Exception e)
{
System.out.println("B");
}
finally
{
System.out.println("C");
}
System.out.println("D");
}
public static void showExce()throws Exception
{
throw new Exception();
}
}
/*Demo1和Demo2中的输出"A"语句都是无法访问到的语句,
为什么一个编译可通过,一个编译失败呢? 还是有点不明白,编译失败的情况是怎么划分或有哪些情形。
*/
class Demo2
{
public static void func()
{
try
{
throw new Exception();
System.out.println("A");
}
catch (Exception e)
{
System.out.println("B");
}
}
public static void main(String[] args)
{
try
{
func();
}
catch (Exception e)
{
System.out.println("C");
}
System.out.println("D");
}
}
作者:
e10my
时间:
2014-5-25 12:05
本帖最后由 e10my 于 2014-5-25 19:37 编辑
demo2中 你将
System.out.println("A");
复制代码
写在了
throw new Exception();
复制代码
之后
抛出异常之后 这之后的语句将不会执行 这是不允许的(无论如何都不会执行到)。 所以会出现语法错误
Test2.java:20: 无法访问的语句
System.out.println("A");
^
1 错误
复制代码
反正在你抛出异常之后就不会执行后面的语句那么干脆删掉好了
public class Test2
{
public static void main(String[] args)
{
try
{
func();
}
catch (Exception e)
{
System.out.println("C");
}
System.out.println("D");
}
public static void func()
{
try
{
throw new Exception();
//System.out.println("A");
}
catch (Exception e)
{
System.out.println("B");
}
}
}
复制代码
像这样 。
updata :
有类似的错误如:
for(int i = 0; i<=4;i++){
break;
System.out.println("a");
}
复制代码
以上代码也是由于输出语句无法执行到而错误信息:
Unreachable code [无法执行到的代码]
这样的情况毕老师的课程中 3-10 有详细的解释
ps :感谢管理员加分!
作者:
lzhuas
时间:
2014-5-25 12:33
楼上正解
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2