免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3255 | 回复: 9
打印 上一主题 下一主题

在try块中就不返回任何值了?该如何解决? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-21 10:30 |只看该作者 |倒序浏览
我是初学者,在一段代码中用了IF语句,编译和运行正常。但把IF语句加入到了TRY CATCH中就不能编译了。提示要返回一个逻辑指值:
     public class ifText1
  {
       int  chenji=65;
        boolean cha()
     {
            try
             {
                  if(chengji<60)
           return  false;
           return  true;
                 }
         catch(Exception e)
               {
                           System.out.println("发生异常");
                }
       }
        public static void main(String[] args)
                        {
                 ifText1  dd=new ifText1();
                 dd.cha();
                }
  }
       所以我就搞不明白了,是不是代码包括到try中就不返回任何值了?哪位朋友帮忙解释一下。谢谢

论坛徽章:
0
2 [报告]
发表于 2008-12-21 12:51 |只看该作者
不是,而是如果try语句中出现异常,程序就执行catch段,然后返回main方法下了,你的cha方法就没有返回值了。所以你要在try语句外再添加一个return。

论坛徽章:
0
3 [报告]
发表于 2008-12-21 14:06 |只看该作者

回复 #2 yujian_001 的帖子

那么此时返回语句怎么写呢?把IF语句都搬过来?因为不是简单返回一个true或者false,谢谢

论坛徽章:
0
4 [报告]
发表于 2008-12-21 16:22 |只看该作者
把return true; 放try语句外面

论坛徽章:
0
5 [报告]
发表于 2008-12-21 18:43 |只看该作者
right

论坛徽章:
0
6 [报告]
发表于 2008-12-21 19:08 |只看该作者

回复 #5 wxibing 的帖子

对。是要放try块外面,  但是返回什么有IF 的条件选择,该怎么写呢?谢谢   该程序其实是这样的:
package src;
import java.sql.*;
public class Chaeam

{ String eple,eamid;

   public Chaeam()

    {
       try{Class.forName("oracle.jdbc.driver.OracleDriver";
          }
       catch(ClassNotFoundException e){}
    }
  public void setEple(String s)
     {
      eple=s;
     }
public boolean  Chadata()
    {   
     try{   
          String hostIp="10.150.144.129";
          String ORACLE_SID="qqdl";
          String user="system";
          String pass="manager";
          String url="jdbcracle:thin"+hostIp+":1521:"+ORACLE_SID;
          Connection conn=DriverManager.getConnection(url,user,pass);
          Statement stmt=conn.createStatement();
          ResultSet rs=stmt.executeQuery("select * from ipadd where eamid="+"'"+eple+"'";
                   rs.close();
                   stmt.close();
                   conn.close();
              if(!rs.next())
                  {
                   return  false;
                  }
                    else
                     {
                       do
                       {
                          return  true;
                       }
                        while(rs.next());
                     }  
       }  
        catch(SQLException  e)
          {
             e.printStackTrace();
          }
            return true;  
    }  
}
      想用JDBC做一个验证用户的登录系统,后台是oracle ,在try 块里没有返回的逻辑值,只能把整个if语句块放try块外面,但此时rs变量又不能识别了,索性不要If语句了。直接返回true,用JSP打开网页后,不管什么eamid都能登录了。

[ 本帖最后由 limqqepp 于 2008-12-21 19:32 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2009-01-13 17:33 |只看该作者

修改后的代码,建议在ide中开发,会有提示

public class ifText1
  {
int chenji = 65;
boolean cha() {
  try {
   if (chenji < 60)
    return false;
   return true;
  } catch (Exception e) {
   System.out.println("发生异常");
  }
  return false;
}
public static void main(String[] args) {
  ifText1 dd = new ifText1();
  dd.cha();
}
}

论坛徽章:
0
8 [报告]
发表于 2009-01-13 23:28 |只看该作者
原帖由 yujian_001 于 2008-12-21 16:22 发表
把return true; 放try语句外面

或者在catch里也放一个return。

论坛徽章:
0
9 [报告]
发表于 2009-01-14 00:20 |只看该作者

  1. public class ifText1 {
  2.         int chenji = 65;

  3.         boolean cha() {
  4.                 return (chengji < 60);
  5.         }

  6.         public static void main(String[] args) {
  7.                 new ifText1().cha();
  8.         }
  9. }
复制代码

[ 本帖最后由 thinhare 于 2009-1-14 00:29 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2009-01-18 21:10 |只看该作者

thanks

谢谢大家
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP