Tag: exception handling

如何获取导致exception的方法的名称

我的代码如下所示。 try { _productRepo.GetAllProductCategories(); } catch (Exception ex) { //Do Something } 我需要一种方法来显示方法名称,假设在上面的例子中,如果在GetAllProductCategories()方法中抛出任何exception,我需要获取此方法名称,即“GetAllProductCategories()”作为我的结果。 谁能建议我怎么做?

最后Block没有运行?

好吧这是一个奇怪的问题,我希望有人可以解释一下。 我有以下代码: static void Main(string[] args) { try { Console.WriteLine(“in try”); throw new EncoderFallbackException(); } catch (Exception) { Console.WriteLine(“in Catch”); throw new AbandonedMutexException(); } finally { Console.WriteLine(“in Finally”); Console.ReadLine(); } } 现在,当我将其编译为目标3.5(2.0 CLR)时,它将弹出一个窗口,说“XXX已停止工作”。 如果我现在单击取消按钮它将运行finally,如果我等到它完成查找并单击关闭程序按钮它也将运行finally。 现在有趣和令人困惑的是,如果我对4.0编译同样的事情点击取消按钮将运行finally块并单击关闭程序按钮不会。 我的问题是:为什么在点击关闭程序按钮时,终于在2.0而不是4.0上运行? 这有什么影响? 编辑:我在Windows 7 32位的发布模式(内置发布模式)中从命令提示符运行此命令。 错误消息:在Windows查找问题后,下面的第一个结果是3.5点击关闭,第二个是我在4.0上运行它并执行相同的操作。

Uri.EscapeDataString() – 无效的URI:Uri字符串太长

我在Windows Mobile上使用紧凑框架/ C#。 在我的应用程序中,我通过序列化对象并使用HttpWebRequest / POST请求将数据上传到服务器来上传数据。 在服务器上,后期数据被反序列化并保存到数据库中。 前几天我意识到我在post数据(&符号等)中遇到了特殊字符的问题。 所以我在方法中引入了Uri.EscapeDataString(),一切都很顺利。 但是,今天我发现当应用程序尝试上传大量数据时会出现问题(我不确定此刻究竟表示“大”的是什么!) 现有代码(种类) var uploadData = new List(); uploadData.Add(new Thing() { Name = “Test 01” }); uploadData.Add(new Thing() { Name = “Test 02” }); uploadData.Add(new Thing() { Name = “Test with an & Ampersand ” }); // Do this a lot!! var postData = “uploadData=” + Uri.EscapeDataString(JsonConvert.SerializeObject(uploadData, […]

堆栈跟踪上的行号错误

我有这个代码 try { //AN EXCEPTION IS GENERATED HERE!!! } catch { SqlService.RollbackTransaction(); throw; } 上面的代码在此代码中调用 try { //HERE IS CALLED THE METHOD THAT CONTAINS THE CODE ABOVE } catch (Exception ex) { HandleException(ex); } try { //HERE IS CALLED THE METHOD THAT CONTAINS THE CODE ABOVE } catch (Exception ex) { HandleException(ex); } 作为参数传递给方法“HandleException”的exception包含堆栈跟踪中“throw”行的行号,而不是生成exception的实际行。 任何人都知道为什么会发生这种情况? […]