我正在构建一个应用程序以从Internet检索图像。尽管它工作正常,但在应用程序中使用try-catch语句时速度很慢(在错误的给定URL上)。(1)这是验证URL和处理错误输入的最佳方式吗?还是我应该改用Regex(或其他一些方法)?(2)如果我没有在文本框中指定http://,为什么应用程序会尝试在本地查找图像?privatevoidbtnGetImage_Click(objectsender,EventArgse){Stringurl=tbxImageURL.Text;byte[]imageData=newbyte[1];using(WebClientclient=newWebC
我想知道最好的方法是“如果一切都失败了”。我的意思是,您在应用程序中处理尽可能多的异常,但仍然会有错误,所以我需要有一些东西捕获所有未处理的异常,以便我可以收集信息并存储将它们保存在数据库中或将它们提交给网络服务。AppDomain.CurrentDomain.UnhandledException事件是否捕获所有内容?即使应用程序是多线程的?旁注:WindowsVista公开了允许任何应用程序使用的nativeAPI函数在崩溃后自行恢复......现在想不出这个名字......但我宁愿不要使用它,因为我们的许多用户仍在使用WindowsXP。 最佳答案
我在C#中发现了这个新功能,它允许在满足特定条件时执行捕获处理程序。inti=0;try{thrownewArgumentNullException(nameof(i));}catch(ArgumentNullExceptione)when(i==1){Console.WriteLine("CaughtArgumentNullException");}我正在尝试了解这何时可能有用。一个场景可能是这样的:try{DatabaseUpdate()}catch(SQLExceptione)when(driver=="MySQL"){//MySQLspecificerrorhandlingan
我有以下代码:HttpWebRequestrequest=(HttpWebRequest)WebRequest.Create(url);request.Method="HEAD";request.Credentials=MyCredentialCache;try{request.GetResponse();}catch{}如何捕获特定的404错误?WebExceptionStatus.ProtocolError只能检测到有错误发生,并不能给出错误的具体代码。例如:catch(WebExceptionex){if(ex.Status!=WebExceptionStatus.Protoco
所以,我知道try/catch确实会增加一些开销,因此不是控制流程的好方法,但这些开销从何而来,它的实际影响是什么? 最佳答案 这里要说明三点:首先,在您的代码中实际使用try-catchblock几乎没有或没有性能损失。当试图避免在您的应用程序中使用它们时,不应考虑这一点。只有在抛出异常时才会影响性能。除了发生其他人提到的堆栈展开操作等之外还抛出异常时,您应该知道会发生一大堆运行时/反射相关的事情以填充异常的成员堆栈跟踪对象和各种类型成员等类。我相信这就是为什么如果您要重新抛出异常,一般建议只是throw;而不是再次抛出异常或构造
有什么区别try{}catch{throw;}和try{}catch(Exceptione){throwe;}?我应该什么时候使用其中之一? 最佳答案 结构try{...}catch(){...}/*Youcanevenomitthe()here*/try{...}catch(Exceptione){...}的相似之处在于两者都会捕获tryblock中抛出的每个异常(并且,除非您只是简单地使用它来记录异常,否则应该是避免)。现在看看这些:try{...}catch(){/*...*/throw;}try{...}catch(Exce
所以今天早上我遇到了一些代码,看起来像这样:try{x=SomeThingDangerous();returnx;}catch(Exceptionex){thrownewDangerousException(ex);}finally{CleanUpDangerousStuff();}现在这段代码可以正常编译并正常工作,但是从tryblock中返回感觉不对,尤其是在有关联的finally的情况下。我的主要问题是如果finally抛出它自己的异常会发生什么?您有一个返回的变量,但也有一个异常需要处理...所以我很想知道其他人对从tryblock中返回有何看法?
哪个:using(varmyObject=newMyClass()){try{//somethinghere...}catch(Exceptionex){//Handleexception}}或try{using(varmyObject=newMyClass()){//somethinghere...}}catch(Exceptionex){//Handleexception} 最佳答案 我更喜欢第二个。也可以捕获与创建对象相关的错误。 关于c#-try/catch+using,正确的语
我需要使用WIF保护流式WCFnet.tcp服务端点。它应该根据我们的token服务器验证传入调用。该服务是流式传输的,因为它旨在传输大量数据和内容。这似乎是不可能的。如果我不能绕过这个陷阱,我的圣诞节就会毁了,我会把自己喝死在阴沟里,而快乐的购物者会慢慢地从我身边走过散热体。严肃点,你们。为什么这是不可能的?这是第22条军规。在客户端,我需要使用GenericXmlSecurityToken创建一个channel我从我们的token服务器获得。没问题。//peoplearoundherehatetheFrameworkDesignGuidelines.vartoken=Authent
我看到有人说使用不带参数的catch是一种不好的形式,尤其是当catch什么都不做的时候:StreamReaderreader=newStreamReader("myfile.txt");try{inti=5/0;}catch//Noargs,soitwillcatchanyexception{}reader.Close();然而,这被认为是好的形式:StreamReaderreader=newStreamReader("myfile.txt");try{inti=5/0;}finally//Willexecutedespiteanyexception{reader.Close();}