c# – 为什么try块中的代码与方法的其余部分分开?
发布时间:2020-12-15 19:49:11 所属栏目:百科 来源:网络整理
导读:我的问题是这样的: HttpWebRequest request;try { request = (HttpWebRequest) WebRequest.Create(url);} catch (UriFormatException) { statusLabel.Text = "The address you entered was malformed,please correct it."; statusLabel.ForeColor = Color.R
我的问题是这样的:
HttpWebRequest request; try { request = (HttpWebRequest) WebRequest.Create(url); } catch (UriFormatException) { statusLabel.Text = "The address you entered was malformed,please correct it."; statusLabel.ForeColor = Color.Red; } HttpWebResponse response = (HttpWebResponse) request.GetResponse(); 我将从中得到的错误是请求没有给出值.显然这是因为请求的值在try块中给出. 这让我感到困惑的原因是因为在我使用过的其他语言中,try块中的代码并没有与其他代码保持分离(我忘记了这个词,可能是封装?) – 类似于方法. 我是以错误的方式来做这件事的吗?我应该在假设WebRequest没有抛出一个异常之后复制try块中的代码吗? 解决方法
你误解了这个错误.
请求变量在所有代码的范围内.但是,在try块之外,它不能保证具有值,并且C#编译器将不允许您使用变量,除非它可以确定已经分配了变量. 具体来说,如果WebRequest.Create抛出异常,则不会将请求分配给. 你可以通过在catch块之外分配一个值来修复它,如下所示: HttpWebRequest request = null; 顺便说一句,你不应该在这里使用catch块. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |