【Java】Unreachable code编译异常

如下代码在Java中是不可以编译的:

public class unReachableTest {
	public static void main(String[] args) {
		while(true){

		}
		System.out.println("aaaaaa");
	}
}

这段代码的看起来没有任何语法错误,但是非常明显可以知道,这段代码根本就没有意思,aaaaa永远都不会输出,

然而,Java不同于C语言,Java认为这段代码是存在一个不可达的语言错误,根本就不可以编译。

如果你运行这段代码,会出现以下的情况,

这并不是说,你while(true)这样的结构是错误的,或者while(true)后面不能有代码,是while(true)这个结构里面没有break;之前,后面不能有代码,比如:

public class unReachableTest {
	public static void main(String[] args) {
		while(true){
			break;
		}
		System.out.println("aaaaaa");
	}
}

就是正确代码,运行结果就是aaaaaa,或者也是正确代码,虽然这个程序永远不结束:

public class unReachableTest {
	public static void main(String[] args) {
		while(true){
		}
	}
}

因此,在你写一些需要用到死循环结构的程序的时候,如果Eclipse提出这样的简体,说你while后面的代码错误的时候,你应该明白什么回事,而不是稀里糊涂地跟从建议,把这段代码删除。

时间: 2024-11-05 15:44:54

【Java】Unreachable code编译异常的相关文章

java unreachable code不可达代码

例子: static int test(int testval) {    int target = 1;    if (testval > target)       System.out.println(1);    return -1;(下边是永远不会达到的代码,所以编译器提示错误(unreachable code))    if (testval < target)       return +1;    return 0; // match }. 修改为让return -1 与上边的

Java会出现"unreachable code"错误的几个例子

出现“unreachable code”的编译出错的原因是,Java检查到他们后面的语句都无法执行下去,要不是 因为跳到下一次循环,或其他地方,要不是因为不停死循环,无法执行下一句.这些错误叫做编译时错误 Checked exception:这类异常都是Exception的子类 Unchecked exception: 这类异常都是RuntimeException的子类 1. throw关键字 Java代码:   1 public void XXX() throws Throwable{ 2 t

Java之运行时异常与编译时异常区别

Java中用2种方法处理异常: 1.在发生异常的地方直接处理: 2.将异常抛给调用者,让调用者处理. Java异常可分为3种: (1)编译时异常:Java.lang.Exception (2)运行期异常:Java.lang.RuntimeException (3)错误:Java.lang.Error Java.lang.Exception和Java.lang.Error继承自Java.lang.Throwable; Java.lang.RuntimeException继承自Java.lang.E

java 编译异常及其解决办法(持续更新)

java 编译异常及其解决办法(持续更新) 1.解决办法:将jar版本降低适配 低版本的jdk或tomcat 1 严重: ContainerBase.addChild: start: 2 org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/EasyGo]] 3 at org.apach

java基础1:异常

关于Java基础的文章,我觉得写得还可以,以前发在了我其它的博客了,肯定是原创,现在再分享给大家出来. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

java中常见的异常类

1. java.lang.nullpointerexception   这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等.对数组操作中出现空指针,很多情况下是一些刚开始学习编程的朋友常犯的错误,即把数组的初始化和数组元素的初始化混淆起来了.数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空

java内存动态编译执行

1.package org.jui.core.dynamic; public class DynaCompTest { public static void main(String[] args) throws Exception { String fullName = "DynaClass"; StringBuilder src = new StringBuilder(); src.append("public class DynaClass {\n"); src

Java thread中对异常的处理策略

转载:http://shmilyaw-hotmail-com.iteye.com/blog/1881302 前言 想讨论这个话题有一段时间了.记得几年前的时候去面试,有人就问过我一个类似的问题.就是java thread中对于异常的处理情况.由于java thread本身牵涉到并发.锁等相关的问题已经够复杂了.再加上异常处理这些东西,使得它更加特殊. 概括起来,不外乎是三个主要的问题.1. 在java启动的线程里可以抛出异常吗? 2. 在启动的线程里可以捕捉异常吗? 3. 如果可以捕捉异常,对于

java的两种异常runtimeException和checkedException

java异常处理机制主要依赖于try,catch,finally,throw,throws五个关键字. try 关键字后紧跟一个花括号括起来的代码块,简称try块.同理:下面的也被称为相应的块. 它里面可置引发异常的代码.catch后对应异常类型和一个代码块,用于表明catch块用于处理这种类型的代码块.后还可以跟一个finally块,finally块用于回收在try块里打开的物理资源,异常机制会保证finally块总被执行.throws关键字主要在方法签名中使用,用于声明该方法可能抛出的异常,