草庐IT

异常系列

全部标签

c# - 什么时候抛出异常更好,什么时候返回一些错误日志 'object' 更好?

我想知道如何在两者之间做出决定:1)如果抛出自定义异常或者2)返回一种具有标志的LOG对象,如“CityNotFound”、“ReferenceConstraintBroken”等。我一直在阅读异常是昂贵的。如果我只需要了解流程结果的具体细节,对我来说,拥有一个仅包含流程必要信息的自定义“流程日志对象”听起来更有益。所以,如果我回到我的问题:什么时候抛出异常更好,什么时候返回一些错误日志“对象”更好? 最佳答案 抛出异常以提供更多信息(异常类型、消息等)以进行正确处理并表示:您的代码被不当/非法使用即反对在编译期间无法执行的契约(C

c# - 安全异常 : Request for the permission of type 'System.Net.Mail.SmtpPermission'

这是“在本地工作,在服务器上不工作”的帖子之一。我有一个发送电子邮件的简单联系表单。在服务器上,我得到以下异常:SecurityExceptionDescription:Theapplicationattemptedtoperformanoperationnotallowedbythesecuritypolicy.Tograntthisapplicationtherequiredpermissionpleasecontactyoursystemadministratororchangetheapplication'strustlevelintheconfigurationfile.Ex

c# - 在 C# 中解析负双数时出现异常

我正在编写一段从数据库中提取一些数据的代码。问题是我想将负数字符串“−2.8”转换为double。很简单,我想。我先尝试了:varclimateString="−2.8";varnumber=double.Parse(climateString);结果是:Anunhandledexceptionoftype'System.FormatException'occurredinmscorlib.dll于是我又想了想,google了一下,得到了新的答案:varclimateString="−2.8";varstyles=NumberStyles.AllowParentheses|Number

c# - 任务未处理的异常

我试图了解在任务对象中抛出且从未处理过的异常发生了什么。在MSDN上它说:Ifyoudonotwaitonataskthatpropagatesanexception,oraccessitsExceptionproperty,theexceptionisescalatedaccordingtothe.NETexceptionpolicywhenthetaskisgarbage-collected.所以我不太明白这些异常会以何种方式影响程序流程。我认为这些异常一旦被垃圾收集就应该中断执行。但我无法设计这种行为。在以下代码段中,抛出的异常未显示。//Dosomething...Task.R

C# 忽略异常的最佳方法

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:IgnoreExceptioninC#有时在极少数情况下你真的想忽略异常。做这个的最好方式是什么?我的方法是捕获异常但不做任何事情。其他人呢?try{blah}catch(Exceptione){}

c# - 未经授权的访问异常 : Invalid cross-thread access in Silverlight application (XAML/C#)

C#相对较新,想尝试使用它来使用一些第三方Web服务API。这是XAML代码这是C#代码privatevoidButton_Click(objectsender,RoutedEventArgse){HttpWebRequestrequest=(HttpWebRequest)WebRequest.Create("http://api.twitter.com/1/users/show/keykoo.xml");request.Method="GET";request.BeginGetResponse(newAsyncCallback(twitterCallback),request);}p

c# - .NET 的一般异常处理策略

我习惯于在每个方法中都有try/catchblock。这样做的原因是我可以在违规点捕获每个异常并将其记录下来。从我的阅读和与他人的交谈中,我了解到这不是一个流行的观点。一个人应该只捕获一个人准备处理的东西。但是,如果我没有在违规点抓到,那么就可能永远不会记录该违规行为并知道它。注意:当我接住但不处理时,我仍然会抛出。这允许我让异常传播到将处理它的东西,但仍然让我在违规点记录它。那么...如何避免在每个方法中使用try/catch,同时仍然在错误发生时记录错误? 最佳答案 不,不要捕获一切。异常在堆栈中向上传播。您所要做的就是确保异常

c# - NHibernate 异常 : Transaction not connected, 或已断开连接

在我们的开发环境中,所有ASP.NET应用程序都运行良好。但是,当我在测试机器上部署站点时,在某些页面上出现此异常:NHibernate.TransactionException:Transactionnotconnected,orwasdisconnectedatNHibernate.Transaction.AdoTransaction.CheckNotZombied()ind:\CSharp\NH\NH\nhibernate\src\NHibernate\Transaction\AdoTransaction.cs:line406atNHibernate.Transaction.Ad

c# - mscorlib.dll 中发生类型为 'System.StackOverflowException' 的未处理异常

我在asp.net中写了一段代码,从文件中读取数据并绘制图表。它工作了,但是当我运行程序一段时间后,出现了这个异常"Anunhandledexceptionoftype'System.StackOverflowException'occurredinmscorlib.dll"在代码中的这条语句中:if(File.Exists(fName)) 最佳答案 您的函数可能无限次地递归调用自身。有时这会间接发生(您在BCL中调用一个方法,它会回调您的代码,这样会不断重复)。File.Exists可能不是罪魁祸首。发生错误时查看您的调用堆栈。

c# - 异常后关闭流

我打开一个流,然后反序列化流中的数据。但是,我向SavedEventSet对象添加了一个成员,所以现在当我尝试打开一个旧文件时,它会在反序列化行上抛出异常。这对我来说很好(目前)但问题是我处理了异常,但从未关闭流(因为异常发生在我关闭流之前),所以当我再次尝试打开文件时,它不会让我,因为它正在使用中。出现此异常后如何关闭流?如果我将stream.Close()放在catch或finally中,它会提示试图访问未分配的局部变量。打开一个我知道的随机文件似乎是不好的做法。有没有什么方法可以以类似于空构造函数的方式打开流,使其看起来像是已分配?谢谢SavedEventSetsES;OpenF