Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java不可访问代码错误_Java_Exception_Smartfoxserver - Fatal编程技术网

Java不可访问代码错误

Java不可访问代码错误,java,exception,smartfoxserver,Java,Exception,Smartfoxserver,我正在为SmartFox服务器扩展创建一个Java类。它正在尝试访问MySQL数据库 我在session.setProperty(“DatabaseID”,dbId)行上收到一个名为Unreachable code的错误 您的第二个if语句以结尾这是一个有效的语句。在下一个块中抛出异常,这就是错误的原因 if(!getApi().checkSecurePassword(session, dbPword, pass)); 上面的if语句以分号终止,分号是一个有效的语句,if语句将对其起作用,代码

我正在为SmartFox服务器扩展创建一个Java类。它正在尝试访问MySQL数据库

我在
session.setProperty(“DatabaseID”,dbId)行上收到一个名为
Unreachable code
的错误


您的第二个if语句以
结尾这是一个有效的语句。在下一个块中抛出异常,这就是错误的原因

if(!getApi().checkSecurePassword(session, dbPword, pass));
上面的if语句以分号终止,分号是一个有效的语句,if语句将对其起作用,代码的另一部分正在执行,而不管if语句是什么,这将在末尾引发异常

{
    SFSErrorData errorData = new SFSErrorData(SFSErrorCode.LOGIN_BAD_PASSWORD);
    errorData.addParameter(email);

    throw new SFSLoginException("Bad password for user: "+ email, errorData);
}

这就是为什么会出现错误,因为您的行
session.setProperty(“DatabaseID”,dbId)永远不会到达

有一个假的
在上一个代码块之前:

if(!getApi().checkSecurePassword(session, dbPword, pass));
                                                      // ^
                                                      // |
                                                      // +---- remove this ';'
{
   ...
   throw new SFSLoginException("Bad password for user: "+ email, errorData);
}

session.setProperty("DatabaseID", dbId);

因此总是执行
抛出
,因此代码永远不会到达
会话.setProperty()
,因为存在不需要的
在第二个
if
之后,以下
{}
块将始终执行。这意味着
SFSLoginException
将始终被抛出,执行将跳转到
捕获

这将导致永远不会调用
setProperty
方法

您需要从代码中的以下语句中删除分号:


if(!getApi().checkSecurePassword(session,dbPword,pass))

如果(!getApi().checkSecurePassword(会话、dbPword、密码))。。。。。删除“;”不可访问的代码是编译时的,在这里我认为编译器只知道他永远不会有有效的密码。(这是将
{
与条件语句放在同一行的另一个很好的论据——分号在视觉上更不合适。)
if(!getApi().checkSecurePassword(session, dbPword, pass));
                                                      // ^
                                                      // |
                                                      // +---- remove this ';'
{
   ...
   throw new SFSLoginException("Bad password for user: "+ email, errorData);
}

session.setProperty("DatabaseID", dbId);