Tag: error handling

抛出exception与Contract.Requires ?

我想知道是否应该抛出exception或调用Contract.Requires 例如: public static void Function(String str) { if (str == null) throw new ArgumentNullException(“str”, “Input string cannot be null.”); // … } VS public static void Function(String str) { Contract.Requires(str != null, “Input string cannot be null.”); // … } 由于Contract.Requires不需要CONTRACTS_FULL符号,我也可以将它保留在我的发布版本中。 这是我的考虑: Con:您无法调用自定义exception类型构造函数的重载版本。 根本没有办法将其他参数传递给构造函数。 Pro:静态工具支持(例如通知调用者违反合同)。 我应该使用哪一种,以及哪种情况?

C#resx文件错误

我的.resx文件出现了一个奇怪的错误: “无效的Resx文件.ResX输入无效。无法找到ResX读取器和写入器类型名称的有效”resheader“标签.C:\ Documents and Settings \ Users \ My Documents \ Visual Studio 2010 \ Projects \ dock \ WinForms \ Dock \ strings.resx” 我所做的是将现有VS 2010解决方案中的一些文件替换为VS 2008解决方案中的一些旧文件,大多数文件工作正常,但我收到此错误,我不知道如何修复它。 如果它有所不同, 这是该文件的源代码。 我正在使用.NET WinForms 4.0,如果这很重要的话。

ServiceStack中是否需要ResponseStatus?

需要ResponseStatus吗? 维基说我们需要在响应DTO中有一个ResponseStatus属性来处理exception序列化: https://github.com/ServiceStack/ServiceStack/wiki/Validation 但是,即使响应DTO中没有ResponseStatus属性,也会自动生成ResponseStatus。 我们需要ResponseStatus属性吗?

空抓块

我有时遇到需要捕获exception的情况,如果它被抛出但从不对它做任何事情。 换句话说,可能会发生exception,但如果发生exception则无关紧要。 我最近阅读了这篇关于类似内容的文章: http : //c2.com/cgi/wiki?EmptyCatchClause 这个人谈论的评论如何 // should never occur 是代码气味,不应该出现在代码中。 然后他们去解释如何评论 // don’t care if it happens 完全不同,我自己遇到这种情况。 例如,在发送电子邮件时,我会做类似的事情: var addressCollection = new MailAddressCollection(); foreach (string address in addresses) { try { addressCollection.Add(address); } catch (Exception) { // Do nothing – if an invalid email occurs continue and try to add the rest […]

我怎么能抓到404?

我有以下代码: HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = “HEAD”; request.Credentials = MyCredentialCache; try { request.GetResponse(); } catch { } 如何捕获特定的404错误? WebExceptionStatus.ProtocolError只能检测到发生了错误,但没有提供错误的确切代码。 例如: catch (WebException ex) { if (ex.Status != WebExceptionStatus.ProtocolError) { throw ex; } } 只是没有用…协议exception可能是401,503,403,真的是什么。

C#HttpWebRequest SEC_I_RENEGOTIATE间歇性错误

我正在使用C#(。Net framework 3.5)应用程序中的SSL POST调用来处理登录/注销function。 通过HttpWebRequest :: BeginGetResponse()从服务器获取响应的工作时间为80%,但另外20%是间歇性抛出: The request was aborted: Could not create SSL/TLS secure channel. 我使用另一个问题中的建议文章启用了SSL跟踪。 这在请求跟踪中产生了两种不同的模式。 似乎在执行期间,错误: System.Net Error: 0 : [3680] Decrypt returned SEC_I_RENEGOTIATE. 正在接收,导致重新启动安全上下文。 当发生这种情况并且成功时,这是输出(注意我省略了实际地址): System.Net Error: 0 : [3680] Decrypt returned SEC_I_RENEGOTIATE. System.Net Information: 0 : [3680] InitializeSecurityContext(credential = System.Net.SafeFreeCredential_SECURITY, context = 4bec0d0:4c0a8a8, targetName = [omitted].com, inFlags = ReplayDetect, […]

抓住另一个进程未处理的exception

我想知道我是否可以捕获由我开始使用Process.Start(…)的另一个进程抛出的未处理的exception 我知道我可以使用此链接捕获standered错误,但我想要的是捕获通常由.NET环境的Just In Time调试器捕获的错误,该窗口包含以下单词:“发生了未处理的exception在你的应用程序中。如果你继续,应用程序将忽略此错误并尝试继续。如果你单击退出,应用程序将立即关闭….“然后是exception消息,然后是”继续“, “退出”按钮。 提前致谢。