Java compile时,提示 DeadCode的原因
在工程编译时,编译器发现部分代码是无用代码,则会提示:某一行代码是DeadCode。今天compile工程的时候发现某一个循环出现这个问题,如下:
public void mouseOver(final String[] xpathArray) {
final int browserType = GlobalSettings.browserCoreType;
// Selenium doesn't support the Safari browser
if (browserType == 4) {
Assert.fail("Mouseover is not supported for Safari now");
Assert.fail("Incorrect browser type");
} pause(pause);
Robot rb = null;
try {
rb = new Robot();
} catch (AWTException e) {
e.printStackTrace();
}
rb.mouseMove(0, 0);
try {
webDriverWait.until(new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver driver) {
Boolean flag = false;
for (String xpath : xpathArray) {
WebElement we = findElement(xpath); if (browserType == 2 || browserType == 5 || browserType == 6) {
try {
Actions builder = new Actions(browserCore);
builder.moveToElement(we).build().perform();
flag = true;
break;
} catch (Exception e) {
logger.error("Failed to mouseover " + xpath, e);
flag = false;
handleFailure(e.getMessage());
}
logger.info("Mouseover " + xpath);
} else if (browserType == 1 || browserType == 3) {
try {
for (int i = 0; i < 5; i++) {//DeadCode
Actions builder = new Actions(browserCore);
builder.moveToElement(we).build().perform();
logger.info("Mouseover " + xpath);
flag = true;
break;
}
}catch (Exception e) {
logger.error("Failed to mouseover " + xpath, e);
flag = false;
handleFailure(e.getMessage());
}
}
}
return flag;
}
});
}catch (Exception e){
handleFailure(e.getMessage());
}
分析了下,其实循环部分的第二次就不会再执行了,因编译器已经检查到执行后的flag的状态为true,所以给出了DeadCode的警告。而代码实际运行过程中也确实不会执行第二次。
举个例子:
if(true && true){
System.out.println("这里会一直被执行");
}else{
System.out.println("这里一直不会被执行");
}
上例中,因compiler 已经判定if的结果只会为true,所以else中的语句永远不会被执行,因此else中为DeadCode。
无法预判的语句
Boolean a = true;
Boolean b = true;
if(a && b){
System.out.println("这里会一直被执行");
}else{
System.out.println("这里一直不会被执行");
}
上例中,由于a 和 b是2个变量,编译器编译时,无法预判if的结果是true,因此不会警告else的内容为DeadCode。
Java compile时,提示 DeadCode的原因的更多相关文章
- eclipse创建Java项目时提示Open Associated Perspective?
在eclipse中,原先使用python进行编程,需要新建java项目时,会提示如下信息: 消息框内翻译如下: Open Associated Perspective? --开放关联视角? This ...
- maven project中,在main方法上右键Run as Java Application时,提示错误:找不到或无法加载主类XXX.XXXX.XXX
新建了一个maven project项目,经过一大堆的修改操作之后,突然发现在main方法上右键运行时,竟然提示:错误:找不到或无法加载主类xxx.xxx.xxx可能原因1.eclipse出问题了,在 ...
- mybatis逆向工程 mbg运行java代码时提示找不到MBG.xml的解决方法
这里要写全路径才能找到文件
- 在Ubuntu中安装配置java后运行java -version时提示二进制文件不能执行
因为jdk安装包有问题,试试32位的
- 在浏览器运行 java applet时遇到的一些问题及其解决方法
运行 java applet时提示:您的安全设置已阻止本地应用程序运行,如何解决?如下图所示 这时候通过设置java的安全级别就可以了. 控制面板->程序->Java->安全 将安全 ...
- eclipse打开时提示:failed to create the java virtual machine
Eclipse打开时提示: failed to create the java virtual machine 原因:C盘空间不够 编辑删除 处理:1.用金山清理临时文件: 2.用金山手机卫士连接 ...
- ubuntu myeclipse 启动时提示 A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be avail ....
jdk已经安装过但是启动eclipse时提示“A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be avail ...
- installshield制作的安装包卸载时提示重启动的原因以及解决办法
原文:installshield制作的安装包卸载时提示重启动的原因以及解决办法 有时候卸载installshield制作的安装包程序,卸载完会提示是否重启电脑以完成所有卸载,产生这个提示的常见原因有如 ...
- Java byte类型转换成int类型时需要 & 0XFF的原因
Java byte类型转换成int类型时需要 & 0XFF的原因 假设有byte b = -1; 那么b的二进制是:1111 1111. 如果将b直接转换为int类型,那么二进制是 1111 ...
随机推荐
- Java基础(十一)常用类总结(一)
这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...
- 解压华为P6 UPDATE.APP
#!/usr/bin/env python # Version: 0.2.201308040830 # Author: linkscue # Function: unpack any hauwei h ...
- ubuntu错误解决。
ubuntu中出现如下错误: W: Failed to fetch http://cn.archive.ubuntu.com/ubuntu/dists/precise-backports/main/i ...
- OpenStack学习推荐
前言: 学习.了解.安装部署OpenStack也写了好一段时间了,现在觉得也有点必要写点总结.搞IT这一块基本就这样,不管是搞什么领域,一个项目超过两个月没动它,就基本不知道当时是怎么搞的,当时学 ...
- jump_ur.php通知模板
<title>出错啦~~~</title> <script language="javascript" type="text/javascr ...
- 【留坑】uva12299
这么sb的题本来想练练手记过就是过不了 拍半天也没问题 留坑 哪天有空了去linux下面试试 #include<cstdio> #include<cstring> #inclu ...
- bootstrap+jQuery.validate表单校验
谈谈表单校验 这大概是一种惯例,学习前台后台最开始接触的业务都是用户注册和登录.现在社会坚持以人为本的理念,在网站开发过程同样如此.User是我们面对较多的对象,也是较核心的对象.最开始的用户注册和登 ...
- 【Android - V】之SwipeRefreshLayout的使用
SwipeRefreshLayout是Android V4.V7包中的一个控件,是Google给我们提供的一个下拉刷新的布局控件,可以轻松完成下拉刷新. SwipeRefreshLayout的特点是其 ...
- SQL语法集锦一:SQL语句实现表的横向聚合
本文转载:http://www.cnblogs.com/lxblog/archive/2012/09/29/2708128.html 问题描述:假如有一表结构和数据如下: C1 C2 C3 C4 C5 ...
- 小白学phoneGap《构建跨平台APP:phoneGap移动应用实战》连载四(使用程序载入事件)
在了解了PhoneGap中都有哪些事件之后,本节将開始对这些事件的使用方法进行具体地介绍.本节要介绍的是程序载入事件,也就是deviceready.pause和resume这3个事件. [范例4-2 ...