黑马程序员技术交流社区

标题: 在try{}catch{}中定义变量,提示上下文不存在“××”变量 [打印本页]

作者: 追寻Dream    时间: 2013-9-24 09:11
标题: 在try{}catch{}中定义变量,提示上下文不存在“××”变量
本帖最后由 追寻Dream 于 2013-9-24 09:35 编辑

            try
            {
                Console.WriteLine("请输入一个数");
                int nmuber=Convert.ToInt32(Console.ReadLine());
                Console.WriteLine(nmuber);

            }
            catch
            {
                string input = Convert.ToString(number);//为什么提示当前上下文不存在number变量;
                Console.WriteLine(input);

            }
  
            Console.ReadKey();




作者: 张云飞    时间: 2013-9-24 09:21
本帖最后由 张云飞 于 2013-9-24 09:25 编辑

在try{}catch(){}finally{}语句中,变量的作用域仅限于一个方法域,也就是同一个大括号。
这样你在try中定义的number在catch和finally中都是无效的。
因此,必须将公共变量或者引用定义在整个异常处理外边,然后在内部赋值,就OK了。
另:你此处的变量名也定义不一致,前边是“nmuber”,后边是“number”。




作者: 追寻Dream    时间: 2013-9-24 09:26
张云飞 发表于 2013-9-24 09:21
在try{}catch(){}finally{}语句中,变量的作用于仅限于一个方法域,也就是同一个大括号。
这样你在try中定 ...

谢谢了!刚刚发现了!

            int number = 0; ;
            try
            {
                Console.WriteLine("请输入一个数");
                number = Convert.ToInt32(Console.ReadLine());
                Console.WriteLine(number);
            }
            catch
            {
                string input = Convert.ToString(number);
                Console.WriteLine(input);
            }
            Console.ReadKey();






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2