我想判断一个服务器上面的方法是否能连接上,所有我就远程调用了一下那个服务器上的方法。但是当这个服务器不存在时控制台报一个  验证码为:1:java.net.SocketTimeoutException: Read timed out  错误。我想将这个错误捕获到。然后在经行操作。 但是上面显示我catch (SocketTimeoutException  e)这段有错。我将代码发出来给大家看看。帮忙找找问题static PHPRPC_Client client = null;/**
 * 判断文件转换服务器是否存在
 * User:zhaozhijun
 * @return
 */
public boolean isclient() throws IOException{
boolean bo=true;
try{
Object obj="";
client = new PHPRPC_Client(Constants._CONVERTADDR+"/remote/RemoteCallService");
client.setTimeout(30000);
obj = client.invoke("generationVcode", new Object[] { NetTools.getAllLocalHostIP()[0] }, true);

String validate="";
if(obj!=null){
validate= Cast.toString(obj);
}
logger.debug("验证码为:" + validate);
// 判断验证码是否获取成功
if(validate.length()!=6){
return false;
}
if (validate.equals("error") || validate.equals("404:Not Found") || validate.equals(""))
return false;

}catch (SocketTimeoutException  e) {
bo=false;
e.printStackTrace();
logger.error("连接文件转换服务器超时!"+e);
}catch (Exception e) {
bo=false;
e.printStackTrace();
logger.error("判断文件转换服务器是否存在出错!!"+e);
}
return bo;
}

解决方案 »

  1.   

    应该没错 你抓个图看看呢 我copy了你的代码到工程里因为缺少些对象 全是错。看是不是你什么包没导入
      

  2.   

    不好意思啊! 不会抓图 反正就是try{}catch (SocketTimeoutException  e) {
    bo=false;
    e.printStackTrace();
    logger.error("连接文件转换服务器超时!"+e);
    }时, 这行 catch (SocketTimeoutException  e)   报错  已经导包了 还是一样
      

  3.   

    可能是我描述的不够清楚。
     我要的目的是将java.net.SocketTimeoutException  这个异常捕获。
    很简单的一个问题。
    只需要加一个try{}catch(){}就行了,但是就是我加上了这个try{}catch(){}后,Myeclipse在SocketTimeoutException这段话下面出现了一个红色下划线,  不是没导包的问题。
    难道抛出SocketTimeoutException异常不是这么写的吗?
      

  4.   

    是这样写 抓个图我看最好 看eclipse提示什么