Tag: error handling

获取堆栈跟踪中的参数值

我无法再现我们在错误日志中看到的一些错误。 如果我知道特定方法在抛出exception时使用了哪个记录ID,那么可以更轻松。 我们所有未处理的exception都由我们的全局exception处理程序处理,该处理程序将exception的所有细节以及HTTP请求的所有细节放入日志表中。 有没有办法捕获引发exception的方法的所有参数的值? 或者甚至更好,堆栈跟踪中的所有值?

WCF / C#无法捕获EndpointNotFoundException

我已经创建了一个WCF服务和客户端,它一直有效,直到捕获错误。 具体来说,我试图捕获EndpointNotFoundException以便在服务器因任何原因发生不存在时。 我已经尝试了一个简单的try / catch块来捕获特定的错误和它派生的通信exception,并且我尝试捕获Exception。 这些都没有成功捕获exception,但我确实得到了 System.ServiceModel.dll中出现’System.ServiceModel.EndpointNotFoundException’类型的第一次机会exception 在客户端尝试打开服务时的输出窗口中。 关于我做错了什么的任何想法?

如何使用ThreadException?

我试过用 http://msdn.microsoft.com/en-us/library/system.windows.forms.application.threadexception.aspx#Y399 但是当我这样做的时候 throw new ArgumentNullException(“playlist is empty”); 我一无所获。 我打赌我错过了一些非常明显的东西。 这是我的代码。 using System; using System.Security.Permissions; using System.Windows.Forms; using System.Threading; namespace MediaPlayer.NET { internal static class Program { /// /// The main entry point for the application. /// [STAThread] [SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.ControlAppDomain)] private static void Main() { // Add the event handler for handling UI […]

防止“向Microsoft发送错误报告”

我正在做一个相当大的项目,它不太可能抓住一切。 我发现事件通知我未处理的exception,但是我没有找到一种方法以编程方式关闭Windows错误对话框。 理想情况下,如果存在未处理的exception,我希望触发该事件,提供一个对话框告诉用户存在问题,然后正常关闭。 有没有办法做到这一点? 我意识到我可以在try catch中包装最高层,但我希望能有更优雅的东西。

在C#中如何收集程序崩溃的堆栈跟踪

我是C#的新手。 我正在编写一个基于桌面的小型应用程序,我需要在应用程序中使用此function。 如果应用程序随时崩溃,应用程序应该有最后的机会收集堆栈跟踪并将其发回给我… 请告诉我这方面的指示。 我是否需要尝试捕获覆盖主应用程序的入口点? 或者在C#应用程序中处理此类事情的最佳方法是什么。 谢谢,

WCF Web服务,返回错误/exception字符串

我有一组WCF Web服务,如果发生exception,将使用OutgoingWebResponseContext将错误描述返回给调用者。 我的问题是,有时,当出现问题时,Web服务显示为失败 ,带有ERR_CONNECTION_RESET消息,而不是返回错误消息,我想防止这种情况发生。 例如,这是我的漂亮的C#代码,它查询我的Northwind数据库,并返回一个Customer名称列表。 或者更确切地说, 它会这样做 ,但我故意在那里插入一个例外。 public List GetAllCustomerNames() { // Get a list of unique Customer names. // try { throw new Exception(“Oh heck, something went wrong !”); NorthwindDataContext dc = new NorthwindDataContext(); var results = (from cust in dc.Customers select cust.CompanyName).Distinct().OrderBy(s => s).ToList(); return results; } catch (Exception ex) { OutgoingWebResponseContext […]

“async void”WPF命令处理程序中的exception处理

我正在审查我的同事的一些WPF代码,这是一个基于UserControl的组件库 ,包含许多async void事件和命令处理程序。 这些方法目前不在内部实现任何error handling 。 代码简而言之: private async void NewCommand_Executed(object sender, ExecutedRoutedEventArgs e) { // do some fake async work (and may throw if timeout < -1) var timeout = new Random(Environment.TickCount).Next(-100, 100); await Task.Delay(timeout); } 抛出exception但在NewCommand_Executed未观察到的exception只能在全局级别上处理 (例如,使用AppDomain.CurrentDomain.UnhandledException )。 显然,这不是一个好主意。 我可以在本地处理exception: private async void NewCommand_Executed(object sender, ExecutedRoutedEventArgs e) { try { // do some […]

捕获完全意外的错误

我有一个ErrorRecorder应用程序,它打印出错误报告,并询问用户是否要将该报告发送给我。 然后,我有主应用程序。 如果发生错误,它会将错误报告写入文件,并要求ErrorRecorder打开该文件以向用户显示错误报告。 所以我使用Try / Catch捕获了大部分错误。 但是,如果发生完全意外的错误并关闭我的程序,该怎么办? 有没有像全局/覆盖方法或类似的东西,它告诉程序“在关闭之前,如果发生意外错误,请调用”ErrorRecorderView()“方法”

在C#中存储SqlServer的raiserror消息

如何在C#中存储SQLSERVER的raiserror消息?

如何捕获ConfigurationErrorsException以违反maxRequestLength?

我限制文件大小用户可以从Web.config上传到站点。 如此处所述,如果不接受大小,它应抛出ConfigurationErrorsException。 我试图从动作方法或控制器中捕获上传请求,但没有运气。 连接被重置,我无法显示错误页面。 我尝试在BeginRequest事件中捕获它,但无论我做什么,exception都是未处理的。 这是代码: protected void Application_BeginRequest(Object sender, EventArgs e) { HttpContext context = ((HttpApplication)sender).Context; try { if (context.Request.ContentLength > maxRequestLength) { IServiceProvider provider = (IServiceProvider)context; HttpWorkerRequest workerRequest = (HttpWorkerRequest)provider.GetService(typeof(HttpWorkerRequest)); // Check if body contains data if (workerRequest.HasEntityBody()) { // get the total body length int requestLength = workerRequest.GetTotalEntityBodyLength(); // Get the initial […]