首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么EndGetResponse抛出ArgumentNullException?

当在C#中使用HttpWebRequest类的BeginGetResponse和EndGetResponse方法时,如果传递的参数为null,则会抛出ArgumentNullException。这是因为这两个方法都需要一个IAsyncResult参数来获取异步请求的结果。

以下是一个简单的示例代码,说明了如何使用HttpWebRequest类的BeginGetResponse和EndGetResponse方法:

代码语言:csharp
复制
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.example.com");
request.BeginGetResponse(new AsyncCallback(ResponseCallback), request);

private static void ResponseCallback(IAsyncResult result)
{
    HttpWebRequest request = (HttpWebRequest)result.AsyncState;
    HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result);
    // 处理响应
}

在这个示例中,我们首先创建了一个HttpWebRequest对象,并调用了BeginGetResponse方法来启动异步请求。我们传递了一个匿名的AsyncCallback委托,该委托将在异步请求完成时被调用。

在AsyncCallback委托中,我们使用EndGetResponse方法来获取响应。这里我们需要传递一个IAsyncResult参数,该参数是在BeginGetResponse方法中传递给AsyncCallback委托的。

如果我们在调用EndGetResponse方法时传递了一个null的IAsyncResult参数,则会抛出ArgumentNullException。因此,我们需要确保在调用EndGetResponse方法时传递了一个有效的IAsyncResult参数。

总之,当在C#中使用HttpWebRequest类的BeginGetResponse和EndGetResponse方法时,如果传递的参数为null,则会抛出ArgumentNullException。为了避免这个问题,我们需要确保在调用EndGetResponse方法时传递了一个有效的IAsyncResult参数。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

群友:事务中的异常不也抛出了,为什么没catch到而回滚?

上周,我们通过这篇文章《为什么catch了异常,但事务还是回滚了?》...但还是收到了很多没有理解的反馈,主要是根据前文给出的线索去跟踪,是获得到了回滚的标示和异常,而让大家不理解的是,javax.validation.ConstraintViolationException异常不是最后也向外抛出了...,那么为什么test4里catch没有能够捕获到呢?...所以,这里教大家一个简单方法来理解这次test4的catch为什么没有捕获异常。...所以,前文中我们跟踪的事务回滚所抛出的异常,其实是在test4中的try-catch块执行完之后才抛出的,所以内部的这个catch是无法捕获异常的,这里完全就是catch了个寂寞。

39120

NullReferenceException,就不应该存在!

总结起来,可恨之处有亮点: 不能知道为 null 的是哪个变量、字段或属性; 不能知道为什么为 null。 而这两点直接与异常机制相悖。...ArgumentNullException 就是一个不错的替代异常,说它好因为有两点: 在错误发生的最开始就报告了错误,避免错误的蔓延。...当然,这比 ArgumentNullException 的信息准确性还是差了点儿。...为什么为 null 时不应该输出?如果这个问题回答不上来,那么你的这个 null 判断为你的程序埋藏了一个更深的 BUG——当用户反馈软件行为不正常时,你甚至连异常信息都没收集到!...所以,为了解决这些困惑,我建议在开发中以如下方式对待我们的 null: 对任何可被外部模块调用的方法的参数进行 null 判断,并在参数为 null 时抛出 ArgumentNullException

1.1K10

里式替换(LSP)跟多态有何区别?哪些代码违背了LSP?

为什么这么说呢? 我们还是通过刚才这个例子来解释一下。不过,我们需要对 SecurityTransporter 类中sendRequest() 函数稍加改造一下。...,但如果传递给 demoFunction() 函数的是子类 SecurityTransporter 对象,那 demoFunction() 有可能会有异常抛出。...尽管代码中抛出的是运行时异常(Runtime Exception),我们可以不在代码中显式地捕获处理,但子类替换父类传递进 demoFunction 函数之后,整个程序的逻辑行为有了改变。...在父类中,某个函数约定,输入数据可以是任意整数,但子类实现的时候,只允许输入数据是正整数,负数就抛出,也就是说,子类对输入的数据的校验比父类更加严格,那子类的设计就违背了里式替换原则。...在父类中,某个函数约定,只会抛出 ArgumentNullException 异常,那子类的设计实现中只允许抛出 ArgumentNullException 异常,任何其他异常的抛出,都会导致子类违背里式替换原则

40530
领券