Tag: exception处理

为什么win32exception没有被c#exception处理机制捕获

我有一个winforms应用程序。从Program.cs开始,我们已经定义了main()。我已将此代码放在try-catch块中。 [STAThread] static void Main() { try { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new frmSplash()); } catch (Exception ex) { MessageBox.Show(ex.Message); if (ex.InnerException != null) { MessageBox.Show(ex.InnerException.ToString()); } } } 只要存在win32exception,此机制就会失败,并且会抛出未处理的exception消息并且应用程序崩溃。 关于此代码,我有两个问题: 1)为什么没有抓住win32exception。 2)在最高级别捕获exception是一种好习惯。

WPF – 检查资源是否存在,没有结构化exception处理

有没有办法检查程序集中是否存在资源而不必使用exception处理? 我正在加载来自几个程序集的图像,如果它们不存在,那么我正在处理IOException,这会导致相当多的开销。

使用块从内部exception中检测Dispose()

我的应用程序中有以下代码: using (var database = new Database()) { var poll = // Some database query code. foreach (Question question in poll.Questions) { foreach (Answer answer in question.Answers) { database.Remove(answer); } // This is a sample line that simulate an error. throw new Exception(“deu pau”); database.Remove(question); } database.Remove(poll); } 此代码像往常一样触发Database类Dispose()方法,并且此方法自动将事务提交到数据库,但这会使我的数据库处于不一致状态,因为答案将被删除,但问题和轮询不会。 我可以在Dispose()方法中检测到它因为exception而不是结束块的常规结束而被调用,所以我可以自动化回滚吗? 我不想手动添加try … catch块,我的目标是使用using块作为逻辑安全事务管理器,因此如果执行是干净的则提交到数据库,如果发生任何exception则提交回滚。 你有什么想法吗?

如何在不重置堆栈跟踪的情况下抛出exception?

这是一个后续问题, “throw”和“throw ex”之间有区别吗? 有没有办法提取新的error handling方法而不重置堆栈跟踪? [编辑]我将尝试“内部方法”和Earwicker提供的另一个答案 ,看看哪个可以更好地标记答案。

HttpClient – 处理聚合exception

嗨我正在使用类似这样的HttpClient: public static Task AsyncStringRequest(string url, string contentType) { try { var client = new HttpClient(); client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue(contentType)); return client.GetStringAsync(url).ContinueWith(task => { return task.Result; }); } catch (AggregateException ex) { throw ex; } catch (WebException ex) { throw ex; } catch (Exception ex) { throw ex; } } 但我在处理exception时遇到困难。 我添加了额外的catch块只是为了尝试并逐步抛出,但没有任何断点被捕获到任何catch块中。 我意识到使用Task,exception可能发生在与调用者不同的线程上,因此exception包含在聚合容器中,但我不确定处理这些exception的最佳方法是什么。 例如,我向Web服务发出请求,并在请求中指定了特定的无效参数,并抛出exception。 我希望我能够捕获聚合exception,并查看innerexceptions以找出请求失败的原因并返回友好消息。 所以我的问题是,捕获这些聚合exception并处理它们的最佳方法是什么?

ASP.NET C#捕获类中的所有exception

我知道这不是这样做的方式,而且根本不干净。 我只是想知道是否可能。 如果我有一个带有一堆方法的类 public class Foo { methodA() {} methodB() {} methodC() {} } 是否有可能捕获所有可能发生的exception而无需在每个方法中编写try / catch?

在C#中制作可重用的try / catch块的建议?

我有一个类,其中有大约20个方法。 每个人都做一些Web服务消息处理。 我只需对其进行更改,并意识到这些方法中的每一个都具有完全相同的try / catch: try { /* *** actual processing specific to each method goes here *** */ } catch (FaultException cfex) { // common stuff } catch (CustomException cfex) { // common stuff } catch (Exception ex) { // common stuff } finally { FinalizeServiceCall(wsBus, wsMessage, response, logProps); } 我的问题是; 而不是在每个方法中都有这个完全相同的try / catch块,有没有办法让它变得常见? […]

在C#中使跨线程操作无效

可能重复: 跨线程操作无效:从创建它的线程以外的线程访问控制 我正在编写一些代码,我初始化一个对象(在这种情况下是一个表单),然后空闲,直到它收到某人的消息,或者直接调用其中一个方法。 在我的表单中,我有一个列表框(lTester),显示对此表单的所有调用。 在运行期间,我收到以下错误: 跨线程操作无效:控制’lTester’从其创建的线程以外的线程访问。 我没有手动启动任何线程,事实上我从未使用它们,也不知道C#如何在内部管理UI组件。 有没有办法解决这个问题?

如何处理catch块中的exception?

我试图找到处理exception的理想方法。 我用Google搜索并读取我应该在catch块中放置try catch以处理但是如果嵌套块本身发生任何exception会怎样。 try { int a = 10; int b = 0; int c = a / b; Console.WriteLine(c); Console.ReadKey(); } catch (Exception ex) { int a = 10; int b = 0; int c = a / b; Console.WriteLine(ex.Message.ToString()); Console.ReadKey(); } finally { Console.WriteLine(“Some Exception”); } 在谷歌搜索我读到它应该装饰如下: 如果Catch块本身发生exception,那么如何在C#中处理它? 如果Catch块本身发生exception,那么如何在C#中处理它? 如果在C#中的Catch块中发生exception会发生什么。 在这种情况下,调用者结果也是如此 try { […]

无法在网页上评估表达式….

与此问题相关: 无法计算表达式,因为代码已优化或本机框位于调用堆栈之上 我目前在我的例外中看到这个: {无法评估表达式,因为代码已优化或本机框架位于调用堆栈之上。} 这是有问题的代码。 在response.End();上抛出exception DataSet dataSet = new DataSet(); dataSet.Tables.Add(table); // Table is a well-formatted DataTable formed from data stored in a Session variable HttpResponse response = HttpContext.Current.Response; response.Clear(); response.Charset = “”; response.ContentType = “application/vnd.ms-excel”; response.AddHeader(“Content-Disposition”, “attachment;filename=\”ExcelFile.xls\””); using (StringWriter stringWriter = new StringWriter()) using (HtmlTextWriter htmlTextWriter = new HtmlTextWriter(stringWriter)) { DataGrid dataGrid = […]