草庐IT

C++异常安全

全部标签

c# - .NET 中的 HttpWebRequest NameResolutionFailure 异常(在 Ubuntu 上使用 Mono)

我有一个通过Mono2.10在Ubuntu上运行的.NET程序该程序每分钟左右通过HttpWebRequest下载一个网页,大多数情况下工作正常:Stringresult;WebResponseobjResponse;WebRequestobjRequest=System.Net.HttpWebRequest.Create(url);using(objResponse=objRequest.GetResponse()){using(StreamReadersr=newStreamReader(objResponse.GetResponseStream())){result=sr.Rea

c# - 使用 : HandleRef or IntPtr (newer source code from Microsoft no longer uses HandleRef) 哪个更好/更安全

例如,在旧的.NETFramework2.0源代码(Windows窗体、VisualStudio2005-Whidbey)中,GetClientRect函数是使用HandleRef定义的:[DllImport(ExternDll.User32,ExactSpelling=true,CharSet=CharSet.Auto)]publicstaticexternboolGetClientRect(HandleRefhWnd,[In,Out]refNativeMethods.RECTrect);在新的WindowsAPI代码包(来自Microsoft,2009/2010)中,使用IntPt

c# - 如何测试线程安全

这个问题在这里已经有了答案:Unittestingamultithreadedapplication?(9个回答)HowshouldIunittestmultithreadedcode?(29个答案)关闭5年前。您对如何测试多线程应用程序有什么建议吗?我知道,线程错误很难发现,它们可能随时发生,也可能根本不发生。测试很困难,结果永远不确定。当然最好仔细设计和编程并发模块。尽管如此-我不想遗漏测试方面。因此,有时运行大量处理相同项目的线程可能会引发线程错误。有什么想法或最佳实践可以提高隐藏线程错误的命中率吗?(我正在使用.Net/C#)

c# - 设计线程安全类

阅读MSDN文档时,它总是让您知道某个类是否是线程安全的。我的问题是你如何设计一个线程安全的类?我不是在谈论用锁定调用类我的意思是我正在为MicrosoftcreateXXXclass\object工作,我想说它是“线程安全的”我需要做什么? 最佳答案 使类线程安全的最简单和最万无一失的方法是使其成为immutable.它的美妙之处在于您不必再为锁定而烦恼。秘诀:在C#中将所有实例变量设置为readonly(在Java中为final)。不可变对象(immutable对象)一旦在构造函数中创建和初始化,就无法更改。不可变对象(immu

c# - 如何指定接口(interface)的实现者抛出的异常?

我目前正在开发一个解决方案,并以一种能够强有力地实现策略/提供者模式的方式对其进行设计。因此,该解决方案公开了许多接口(interface)并包含这些接口(interface)的默认实现,这些接口(interface)可以通过DI类型方法进行替换。如果主机应用程序使用许多这样的接口(interface),它期望处理可能发生的某些异常,例如IDataRetriever接口(interface)有一个方法SomeDataTypeGetData(inttimeout);并且主机可以处理一些自定义异常,例如DataRetrievalTimeoutException或NetworkConnect

c# - 为什么后台线程中未处理的异常不会使应用程序域崩溃?

我完全不解。我非常确定,如果线程中存在未捕获的异常,.NET会关闭整个应用程序域,因此我从未测试过。但是我只是尝试了下面的代码并没有失败...谁能解释一下为什么?(在.NET4和3.5中试过)staticvoidMain(string[]args){Console.WriteLine("Mainthread{0}",Thread.CurrentThread.ManagedThreadId);Actiona=newAction(()=>{Console.WriteLine("Backgroundthread{0}",Thread.CurrentThread.ManagedThreadId

c# - 更改每个请求的安全协议(protocol) (HttpClient)

我有一个WebAPI,它必须与一些不同的服务进行通信。目前,我将WebAPI设置为使用以下安全协议(protocol):ServicePointManager.SecurityProtocol=SecurityProtocolType.Tls12;当API通过HttpClient(比如Twitter)调用另一个服务时,它将使用该协议(protocol)。然而与此同时,另一个请求可能会进入以访问来自云的某些内容,无论出于何种原因,目前需要TLS(而不是TLS1.2)。对云端的请求,在发出前,再次设置安全协议(protocol):ServicePointManager.SecurityPr

c# - 您能否从 AuthorizeAttribute 返回 HTTP 响应而不抛出异常?

我在各种Controller上使用AuthorizeAttribute,这些Controller可能需要根据请求本身的某些属性返回403或429(请求太多)。我完全在自定义OnAuthorization实现中实现了它,然后在必要时抛出一个带有适当响应代码的新HttpResponseException。在我的机器上运行良好...在大规模(每分钟数千个请求)下,此实现非常糟糕,以至于它导致网站崩溃。将相同的逻辑移动到Controller操作本身并仅返回适当的HttpResponseMessage就性能而言效果很好,因此在OnAuthorization中抛出异常的代价似乎是性能问题的根本原因

c# - 带有 Attach() 的 LINQ To SQL 异常 : Cannot add an entity with a key that is already in use

考虑这个典型的断开连接的场景:使用LINQToSQL从SQLServer加载客户对象用户编辑实体,表示层发回修改后的实体。数据层,使用L2S,必须将更改发送到SQLServer考虑这个LINQToSQL查询,其目的是获取客户实体。CustcustOrig=db.Custs.SingleOrDefault(o=>o.ID==c.ID);//gettheoriginaldb.Custs.Attach(c,custOrig);//wedon'thaveaTimeStamp=Truepropertydb.SubmitChanges();DuplicateKeyException:Cannota

c# - 如果您重新抛出它们并包裹了另一个异常,是否可以捕获所有异常类型?

我知道您不应该像这样编写缓存所有异常类型的代码。try{//codethatcanthrowanexception}catch{//what?Idon'tseeno}相反,您应该做一些更像下面的代码的事情,以允许您不希望出现的任何其他异常。try{//codethatcanthrowanexception}catch(TypeAException){//TypeAspecificcode}catch(TypeBException){//TypeBspecificcode}但是,如果您用另一个异常包装它们,是否可以捕获所有异常类型?考虑下面的这个Save()方法,我将其作为Catalog