A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ↖落葉下♀媃媚 中级黑马   /  2013-4-16 19:19  /  1709 人查看  /  7 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ↖落葉下♀媃媚 于 2013-4-18 17:32 编辑

try
            {
                int s=Convert.ToInt32("abc");
                //string str =GetAgeDesc(200);
            }
            catch(Exception ex)
            {
                Console.WriteLine("数据错误" + ex.StackTrace);
            }                                             
            Console.ReadKey();
            }
        static string GetAgeDesc(int age)错误 1 “异常处理.Program.GetAgeDesc(int)”: 并非所有的代码路径都返回值 c:\users\lenovo\documents\visual studio 2010\Projects\面向对象\异常处理\Program.cs 25 23 异常处理

        {
            if (age > 0 && age <= 3)
            {
                return "婴幼儿";
            }
            else if (age > 3 && age < 18)
            {
                return "青少年";
            }
            else if (age > 18 && age < 150)
            {
                return "成年人";
            }
            else if (age < 0 || age > 150)
            {
                //出现异常时不用return
                throw new Exception("你是外星人");
            }
求解?怎么会生成错误呢?

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

7 个回复

倒序浏览
  if (age > 0 && age <= 3)
            {
                return "婴幼儿";
            }
            else if (age > 3 && age < 18)
            {
                return "青少年";
            }
            else if (age > 18 && age < 150)
            {
                return "成年人";
            }
            else if (age < 0 || age > 150)
            {
                //出现异常时不用return
                throw new Exception("你是外星人");
            }
           else  return 0;//return null;
添加一个返回值试试;
少了一个返回值

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
你定义的方法是一个必须有返回值的方法,而你的这个方法存在没有返回值的情况!解决方案 把最后一个else if的if后面(含if)去掉!但是这样有当年龄是18的时候会出现结果:你是外星人!  所以建议在第二个else if或者第三个else if那里把18含进去!还有150的时候,你看着办!

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
  1. static string GetAgeDesc(int age)    //该方法有一个string类型的返回值
  2. {
  3. if (age > 0 && age <= 3)
  4. {
  5. return "婴幼儿";
  6. }
  7. else if (age > 3 && <FONT color=red>age < 18</FONT>)
  8. {
  9. return "青少年";
  10. }
  11. else if (<FONT color=red>age > 18 && age < 150</FONT>)   
  12. {
  13. return "成年人";
  14. }
  15. else if (age < 0 || <FONT color=red>age > 150</FONT>)
  16. {
  17. //出现异常时不用return
  18. throw new Exception("你是外星人");
  19. }  
复制代码
你的代码中当age为18和150时没有返回值

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
应该在
throw new Exception("你是外星人");
后面添个
return "";
返回个空字符串。

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
陈帅 发表于 2013-4-16 22:17
应该在
throw new Exception("你是外星人");
后面添个

老师讲的不可以用return
回复 使用道具 举报
陈帅 中级黑马 2013-4-16 22:53:06
7#
↖落葉下♀媃媚 发表于 2013-4-16 22:22
老师讲的不可以用return

那你把 static string GetAgeDesc(int age)
改成static void GetAgeDesc(int age)
把方法里的return "婴幼儿";等等
改为Console.WriteLine("婴幼儿");等等
行不行~~
回复 使用道具 举报
张松 中级黑马 2013-4-17 01:56:12
8#
static string GetAgeDesc(int age)错误 1 “异常处理.Program.GetAgeDesc(int)”: 并非所有的代码路径都返回值 c:\users\lenovo\documents\visual studio 2010\Projects\面向对象\异常处理\Program.cs 25 23 异常处理

        {
             if (age > 0 && age <= 3)
             {
                 return "婴幼儿";
             }
             else if (age > 3 && age < 18)
             {
                 return "青少年";
             }
             else if (age > 18 && age < 150)
             {
                 return "成年人";
             }
             else if (age < 0 || age > 150)
             {
                 //出现异常时不用return
                 throw new Exception("你是外星人");
             }
此方法声明时就要求有返回值,而if else if判断是有一种可能是每个条件都不满足,此时却没有返回值。
你应该else{}添加一条return 语句。

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马