Tag: exception处理

如何插入具有自动增量编号作为主键的新记录?

例如,我有以下表格: 顾客信息 cus_id: auto increment, int, is Identity cus_name: nvarchar 如果我使用以下代码插入记录“彼得”, string name = “Peter”; DataContext DC = new DataContext(); CustomerInfo newCustomer = new CustomerInfo(); newCustomer.cus_name = name; DC.CustomerInfos.InsertOnSubmit(newCustomer); DC.SubmitChanges(); 以下错误返回, 无法对“Table(CustomerInfo)”执行“创建”,“更新”或“删除”操作,因为它没有主键。 我是否需要自定义cus_id或任何其他解决方案? 谢谢!

获取错误并非所有代码路径都通过c#编译器返回值

这是一个基本的字符串反向程序,我想在其中进行一定程度的exception处理。 但在编译期间它给了我一个错误“没有所有代码路径返回值。我无法找出原因 public static string Reverse(string s) { try { if (string.IsNullOrEmpty(s)) { throw new NullReferenceException(); } char[] c = s.ToCharArray(); int start = 0; int end = c.Length – 1; char temp; while (start < end) { temp = c[start]; c[start] = c[end]; c[end] = temp; start++; end–; } return new string(c); } catch […]

任务线程中抛出的exception,未被UnobservedTaskException捕获

我无法理解TPL中如何处理exception。 以下代码应说明我的问题。 using System; using System.Collections.Generic; using System.Net; using System.Threading; using System.Threading.Tasks; namespace WebDLApp { class Program { static void Main(string[] args) { TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException; // Not catching exception List sites = new List{ “http://microsoft.com”, “http://yahoo.com”, “http://facebook.com”, “http://amazon.com”, “http://foooo”, “http://aol.com”, “http://ask.com”, “http://wikipedia.org” }; List<Task> tasks = new List<Task>(); foreach (string site in sites) { […]

如果.Create()无法实例化,它应该返回空对象,null还是抛出exception?

我希望能够使用这种代码实例化我的应用程序中的任何对象: SmartForm smartForm = SmartForm.Create(“id = 23”); Customer customer = Customer.Create(“id = 222”); 我现在正在讨论如果该对象不存在,Create()应该返回什么。 如果Create()返回一个空对象 ,那么这是一种“空模式”,我仍然可以在我的应用程序周围传递该对象并在其上调用方法,这使得使用此模型进行编程变得方便和容易 如果Create()返回null ,那么我需要在每次实例化后检查对象是否等于null,这使得编程更乏味但更明确。 这样做的一个问题是,如果你忘记检查null,你的应用程序可能会工作很长时间而你不知道你没有检查null,然后突然中断 如果Create() 抛出exception ,它基本上与返回null相同,但是通过让你为每个实例化创建一个try,next,finally块,使编程更加繁琐,但你可以抛出各种类型的exception(你可以’ t使用null解决方案)可能会冒泡,以便您可以更明确地处理UI上的深层错误,所以我认为这是最强大的解决方案,尽管会产生try / catch代码膨胀 所以它似乎是轻盈/稳健性的折衷 。 有没有人有任何经验可以根据这个决定在这些方面做出决定? using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TestFactory234.Models { public class SmartForm : Item { public string IdCode { get; set; } public string Title […]

如何使用C#从派生类中的构造函数中捕获exception?

我想知道如何使用C#从派生类中的构造函数中捕获exception。 这样的东西: public class MyClassA { public MyClassA() { //Do the work if (failed) { throw new Exception(“My exception”); } } } public class MyClassB : MyClassA { public MyClassB() { //How to catch exception from a constructor in MyClassA? } }

期望空值时抛出的exception?

如果我期望一个空值并获得一个定义的值(在一个属性的getter中)并想要抛出exception,那么在csharp中执行此操作的正确方法是什么? 在这种情况下,是否已经定义了哪些有意义?

应该处理sqlexception的策略是什么?

我有一个多层应用程序。 DAL – > BAL – > Business Gateway – > UI。 如果在DAL发生外键或唯一约束exception,我们应该如何识别这是什么exception以及向用户显示什么错误消息。 我们应该使用错误号来识别这个。 第二个问题:我们应该如何将此错误传播给UI。 我们正在考虑将此exception抛给BAL,BAL将封装错误并向UI返回响应(而不是exception)。 这是正确的方法吗?

我们如何以及在何处编写try catch块来处理exception

我们使用C#语言开发Windows应用程序。 我们的Windows应用程序包含三个层(UI,Business和DataAccess层)。 在业务层中,有一些公共(业务)方法,UI通过这些方法与业务层类进行通信。 这些公共方法还有一些私有方法来实现所需的function。 DataAcess层中有一些方法是从Business层类调用的。 在这种情况下,我应该在哪里试试? a)在业务层公共方法中b)在忙碌层中私有方法c)在DataAccess层方法中d)在调用Business方法的UI方法中。

捕捉一般例外情况

根据这篇MSDN文章 ,你不应该抓住一般的例外情况。 我确定有一个stackoverflow问题处理这个问题,我理解为什么它不是一个好的做法,但我今天在另一篇MSDN文章中看到了这个例子: using System; using System.IO; class Test { public static void Main() { try { using (StreamReader sr = new StreamReader(“TestFile.txt”)) { String line = sr.ReadToEnd(); Console.WriteLine(line); } } catch (Exception e) { Console.WriteLine(“The file could not be read:”); Console.WriteLine(e.Message); } } } 是否有任何理由在该示例中捕获一般exception,或者只是他们懒得编写一个示例来捕获所有特定exception?

WPF DataBinding监视抛出的exception

在我的模型中,我有很多不同对象的属性,我在设置对象的值时检查值,如果值不被接受,我将抛出一个exception,这与Windows窗体属性网格完美配合,但现在我正在尝试使用WPF设计新界面。 在WPF中,当我将属性绑定到像文本框这样的控件时,当值更改时,我不知道如何处理exception并显示错误消息。 例子: public string ConnectionString { get { return (_ConnectionString); } set { try { _ConnectionString = value ; _SqlConnection = new System.Data.SqlClient.SqlConnection(_ConnectionString); _ConnectionTested = true; } catch (Exception caught) { _ConnectionTested = false; _TableNameTested = false; _FieldNameTested = false; _ConditionTested = false; _ConnectionString = “”; //—-delete values—- ValuesCollection.Clear(); throw (new Exception(“Can not Open […]