Tag: exception处理

SQL Server:使用原始exception编号的Rethrowexception

我在存储过程中使用TRY CATCH块,其中有两个INSERT指令。 如果出现问题,CATCH块会负责回滚所做的所有更改并且工作正常,除了一件事! 我的ASP.NET应用程序捕获的exception是一个数字为50000的SqlException。这不是原始数字! (我期待的数字是2627) 在exception的Message属性中,我可以看到原始的exception编号和格式化的消息。 我怎样才能获得原始的例外号码? try { // … code } catch (SqlException sqlException) { switch (sqlException.Number) { // Name already exists case 2627: throw new ItemTypeNameAlreadyExistsException(); // Some other error // As the exception number is 50000 it always ends here!!!!!! default: throw new ItemTypeException(); } } 现在,返回值已被使用。 我想我可以使用输出参数来获取exception编号,但这是个好主意吗? 我该怎么做才能获得例外号码? 谢谢 PS:这是必需的,因为我有两个INSERT指令。

如何从C#中的进程中捕获exception

我在这里有一个接受跑步者计划,看起来像这样: public Result Run(CommandParser parser) { var result = new Result(); var watch = new Stopwatch(); watch.Start(); try { _testConsole.Start(); parser.ForEachInput(input => { _testConsole.StandardInput.WriteLine(input); return _testConsole.TotalProcessorTime.TotalSeconds < parser.TimeLimit; }); if (TimeLimitExceeded(parser.TimeLimit)) { watch.Stop(); _testConsole.Kill(); ReportThatTestTimedOut(result); } else { result.Status = GetProgramOutput() == parser.Expected ? ResultStatus.Passed : ResultStatus.Failed; watch.Stop(); } } catch (Exception) { result.Status = […]

无法访问文件,因为它正由另一个进程使用

我有一个ASP.NET程序,我使用webClient类的DownloadFile方法从web下载文件并对其进行一些修改。 然后我将它保存到另一个具有唯一名称的文件夹。当我收到此错误 该进程无法访问文件’D:\ RD \ dotnet \ abc \ abcimageupload \ images \ TempStorage \ tempImage.jpg’,因为它正被另一个进程使用 谁能告诉我如何解决这个问题。

单击打印按钮时系统崩溃

我这样做是为了在运行时生成pdf,当我点击打印按钮时当我点击打印按钮时,这个过程是这样的,pdf是用文件夹生成的。 为此,我这样做了: private void btnPrint_Click(object sender, EventArgs e) { private const string PAYMENT_PATH = @”c:\xxxxx\xxxxx\paymentType_{0}”; btnPrint.Visible = true; btnPrint.Enabled = true; string pay = cbpaymenttype.Text; string dds = cbddprovider.Text; string path = String.Format(PAYMENT_PATH, DateTime.Now.ToString(“ddMMyyyyHHmm”)); //List paymenttype = new List(); List printfunction = new List(); foreach (ListViewItem item in lstviewcashmembers.Items) { printfunctions allpayments = new printfunctions(); […]

如何将SqlException消息操作为用户友好消息

我想从UI上获取的错误消息中获取以下exception中的所有替换值,以显示自定义消息到粒度级别 UPDATE语句与FOREIGN KEY约束“FK_Parameter_Status”冲突。 冲突发生在数据库“LIMS”,表“dbo.Status”,列“StatusId”中。 %ls语句与%ls约束“%。* ls”冲突。 冲突发生在数据库“%。* ls”,表“%。* ls”%ls%。* ls%ls。 我可以观察 %ls正在被UPDATE , FOREIGN KEY等取代。 在C#中,我将收到错误消息,我想从中提取由SQL Server替换的部分。 我将在我的库中维护SqlErrors并将其替换为自定义消息。 我要显示的自定义消息,例如。 string.Format(“{0} failed!, incorrect value was supplied for {1} field”, “UPDATE”, “Status”)

在entity framework中添加具有多对多关系的项目

当我尝试添加具有多对多关系的项时,我收到主键违规错误: 我有两个类 – 文章和标签有多对多的关系: public class Article { public int ID { get; set; } public string Text { get; set; } public ICollection Tags { get; set; } } public class Tag { [Key] public string UrlSlug { get; set; } public string Name { get; set; } public ICollection Articles{ get; set; } […]

在不停止序列的情况下处理Reactive Extensions中的exception

为什么RX具有以下语法OnNext* (OnError|OnCompleted) ? 而不是(OnNext|OnError)* OnCompleted ? 从实现角度来看这是非常清楚的(这也与IEnumerable和yield有共同的语义),但我想与现实生活情况不同。 在现实生活中 – 生产者生成混合的数据流和exception(exception不会破坏生产者)。 问题:如果我理解正确,唯一可能的解决方案是使可观察的返回复杂数据结构从初始数据和生成的exception( Observable.Timestamp()和.TimeInterval()具有类似的概念)组合或是否还有其他选项? 目前我得出了以下解决方案:在可观察的生产者内部我手动处理exeptions并将它们传递给以下数据结构,这是我的可观察结果 public class ValueOrException { private readonly Exception ex; private readonly T value; public ValueOrException(T value, Exception ex) { this.value = value; this.ex = ex; } public ValueOrException(T value) { this.value = value; } public T Value { get { return this.value; } […]

我可以用throw删除空捕获吗?

我希望这很简单。 我在一个大型代码库上工作,整体质量很好,但偶尔你会得到一些: try { // Calls a .NET remoting method. } catch { throw; } 请注意,没有最终的逻辑,catch没有指定任何exception或除了我上面提供的内容之外做任何其他操作。 但是,我知道捕获和重新抛出可以改变exception细节中的调用堆栈。 我不确定的是,这种行为是否特别是因为.NET远程调用。 删除这个try-catch是否安全? 据我所知,它是,但我想我会先检查一下奇怪的行为。

WebBrowser控件抛出看似随机的NullReferenceException

几天后,我正在开发基于WebBrowser的webscraper。 在使用Threads和DocumentCompleted事件的几个原型之后,我决定尝试看看我是否可以创建一个简单易懂的Webscraper。 目标是创建一个不涉及实际Thread对象的Webscraper。 我希望它按顺序步骤工作(即转到url,执行操作,转到其他url等等)。 这是我到目前为止所得到的: public static class Webscraper { private static WebBrowser _wb; public static string URL; //WebBrowser objects have to run in Single Thread Appartment for some reason. [STAThread] public static void Init_Browser() { _wb = new WebBrowser(); } public static void Navigate_And_Wait(string url) { //Navigate to a specific url. _wb.Navigate(url); //Wait till […]

创建自定义exception还是使用内置exception?

目前,我正在编写一个客户端类,在其他喜欢抛出exception的类中使用DNS,套接字和SSL。 其他人将实现这个类,所以我想知道抛出exception的最佳做法是什么。 我应该创建自己的自定义exception,以便他们知道这是我的类抛出exception,还是应该允许我调用的类和方法(DNS,套接字等)抛出自己的exception? 目前,代码是数百行,并且随着许多不同的方法调用而增长。 在这种情况下抛出exception的最佳做法是什么?