Tag: exception处理

SqlException约束违规

我正在开发一个asp.net应用程序。 有没有办法在捕获SqlException时知道违反了哪个约束?

如何在Parallel.Foreach中处理exception?

我的代码中有一个parallel.Foreach循环,我想知道如何处理exception。 我应该在循环中捕获并处理(例如写入日志)exception,还是应该在外部捕获聚合exception – 在try / catch中包含循环? 最好的祝福

何时引发exception或返回null?

我在数据访问层上有一些function public Order RetrieveById(int id) public List RetrieveByStatus(OrderStatus status) 现在我对exception提升有点困惑。 在RetrieveById函数的情况下,小于1的id是无效的id,因此我想提出exception。 我想为数据库中不存在的Id返回null。 然后感觉就像我过度复杂。 对于RetrieveByStatus,我觉得当数据库中没有该状态的数据时返回一个空列表。 但是我已经看到有些人在RetrieveById无法返回任何内容时引发exception但是当没有记录时它应该不会引发exception或应该引发exception吗? 谁能请我为这些概念澄清一下?

使用LINQ拆分字符串

我希望通过我的结果来命令我的字符串行中的匹配计数。 所以这是代码 .ThenByDescending(p => p.Title.ToLower() .Split(‘ ‘) .Count(w => words.Any(w.Contains))); 但它给我带来了错误,并说LINQ无法将Split解析为SQL。 LINQ to Entities无法识别方法’System.String [] Split(Char [])’方法,而且此方法无法转换为商店表达式。 如何通过LINQ实现Split? 例如,对于此数组,它必须以这种方式排序 words = { “a”, “ab” } ab a ggaaag gh //3 matches ba ab ggt //2 matches dd //0 matches

StackOverflowException未处理

我的代码中出现此错误 MedCareProviderLibrary.dll中发生未处理的“System.StackOverflowException”类型exception 这是我的代码片段以及错误的来源。 它会在出现错误的部分给出一个黄色箭头。 显示错误的部分以粗体显示。 任何帮助将不胜感激谢谢 private string _TestNo; private string _TestType; private DateTime _TestDate; private string _PatientNo; private string _DoctorNo; public Test() { _TestNo = “”; _TestType = “”; _TestDate = new DateTime(); _PatientNo = “”; _DoctorNo = “”; } public Test(string aTestNo, string aTestType, DateTime aTestDate, string aPatientNo, string aDoctorNo) { _TestNo = […]

如果初始化程序抛出,是否构造了一个对象?

我在Jag Reeghal的博客上阅读了这篇文章 。在我看来,他所建议的内容实际上与使用对象初始化器不同。 然后我意识到我确实不知道。 构造一个对象时,使用对象初始化器,并且其中一个初始化器抛出(可能是Null Referenceexception)……实际构造的对象是什么? 这基本上就像是在构造函数中抛出的exception吗? 或者是完全构造的对象,然后初始化?

错误:将nvarchar数据类型转换为smalldatetime数据类型会导致超出范围的值

嘿所有我正在尝试执行以下插入查询 SqlDataSource userQuizDataSource = new SqlDataSource(); userQuizDataSource.ConnectionString = “Data Source=localhost\\SQLEXPRESS;Initial Catalog=quizApp;Integrated Security=True”; userQuizDataSource.InsertCommand = “INSERT INTO [UserQuiz] ([DateTimeComplete], [Score], [UserName]) VALUES (@DateTimeComplete, @Score, @UserName)”; userQuizDataSource.InsertParameters.Add(“DateTimeComplete”, DateTime.Now.ToString()); userQuizDataSource.InsertParameters.Add(“Score”, score.ToString()); userQuizDataSource.InsertParameters.Add(“UserName”, User.Identity.Name); int rowsAffected = userQuizDataSource.Insert(); Buti不断收到以下错误: 将nvarchar数据类型转换为smalldatetime数据类型会导致超出范围的值。 该语句已终止。 谁能帮我吗?

为什么我没有得到“跨线程操作无效”错误

我使用BackgroundWorker并执行此操作: private void loadNewAsyncToolStripMenuItem_Click(object sender, EventArgs e) { this.Text = “RunWorkerAsync()”; backgroundWorkerLoading.RunWorkerAsync(); } private void backgroundWorkerLoading_DoWork(object sender, DoWorkEventArgs e) { UnsafeThreadMethod(“hello”); EvenUnsaferThreadMethod(); } 而现在这两种方法。 private void UnsafeThreadMethod(string text) { toolStripLabelRssFeedData.Text = text; } private void EvenUnsaferThreadMethod() { panelLoading.Visible = true; } 我不明白为什么UnsafeThreadMethod不会抛出以下exception,但EvenUnsaferThreadMethod会抛出exception。 跨线程操作无效:控制’panelLoading’从其创建的>线程以外的线程访问。 根据消息,因为toolStripLabelRssFeedData是在同一个线程上创建的,但事实并非如此。 我以为我不能调用主线程创建的控件,必须使用ProgressChanged事件。 这是怎么回事? 我还有第二个问题。 当我可以使用ProgressChanged时,这样做有什么好处? 我该怎么办? private void EvenUnsaferThreadMethod() { if (panelLoading.InvokeRequired) […]

当未知值传递给switch语句时,我应该抛出什么类型的Exception

编辑1 更新以使枚举不是方法的参数… 题 使用switch语句中的枚举会出现这种类型的问题。 在示例代码中,开发人员已经考虑了程序当前正在使用的所有国家/地区,但如果将另一个国家/地区添加到国家/地区枚举中,则应抛出exception。 我的问题是,应该抛出什么类型的exception? 示例代码: enum Country { UnitedStates, Mexico, } public string GetCallingCode(Guid countryId){ var country = GetCountry(countryId); switch (country) { case Country.UnitedStates: return “1”; break; case Country.Mexico: return “52”; break; default: // What to throw here break; } } 我看了看 NotImplemented , 未实现请求的方法或操作时引发的exception。 NotSupported 基类中不支持某些方法,期望这些方法将在派生类中实现。 派生类可能只实现基类中方法的子集,并为不支持的方法抛出NotSupportedException。 对于有时可能对象执行请求的操作,并且对象状态确定是否可以执行操作的情况,请参阅InvalidOperationException。 如果调用方法失败是由无效参数以外的原因引起的,则使用 InvalidOperation 。 我的猜测是NotImplemented或Invalid […]

控制台应用程序中的.NET Core Globalexception处理程序

我正在将控制台应用程序移植到.NET Core ,我正在尝试替换此行: AppDomain.CurrentDomain.UnhandledException += UnhandledException; 看完之后,似乎没有内置的方法来做到这一点。 所以我的问题是:用try/catch替换围绕我的整个代码的这一行的唯一方法是什么? 通过阅读本文 ,似乎还有另一种方法,即继续使用System.AppDomain ,但我似乎无法找到这个类/方法。 我唯一的猜测是这个库 ,但它明确指出,如果可能的话不应该使用它,所以我不愿意。