加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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块.
相反,你应该拨打Uri.TryCreate.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读