- 浏览: 5171912 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
silence19841230:
先拿走看看
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
masuweng 写道发下源码下载地址吧!三个相关文件打了个包 ...
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
发下源码下载地址吧!
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
水淼火 写道你好,我使用以后,图标不显示,应该怎么引用呢,谢谢 ...
前端框架iviewui使用示例之菜单+多Tab页布局
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.IO;
namespace GobalException
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
try
{
//处理未捕获的异常
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
//处理UI线程异常
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
//处理非UI线程异常
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
catch (Exception ex)
{
string str = "";
string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";
if (ex != null)
{
str = string.Format(strDateInfo + "异常类型:{0}\r\n异常消息:{1}\r\n异常信息:{2}\r\n",
ex.GetType().Name, ex.Message, ex.StackTrace);
}
else
{
str = string.Format("应用程序线程错误:{0}", ex);
}
writeLog(str);
MessageBox.Show("发生致命错误,请及时联系作者!", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// <summary>
///这就是我们要在发生未处理异常时处理的方法,我这是写出错详细信息到文本,如出错后弹出一个漂亮的出错提示窗体,给大家做个参考
///做法很多,可以是把出错详细信息记录到文本、数据库,发送出错邮件到作者信箱或出错后重新初始化等等
///这就是仁者见仁智者见智,大家自己做了。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
string str = "";
string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";
Exception error = e.Exception as Exception;
if (error != null)
{
str = string.Format(strDateInfo + "异常类型:{0}\r\n异常消息:{1}\r\n异常信息:{2}\r\n",
error.GetType().Name, error.Message, error.StackTrace);
}
else
{
str = string.Format("应用程序线程错误:{0}", e);
}
writeLog(str);
MessageBox.Show("发生致命错误,请及时联系作者!", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
string str = "";
Exception error = e.ExceptionObject as Exception;
string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";
if (error != null)
{
str = string.Format(strDateInfo + "Application UnhandledException:{0};\n\r堆栈信息:{1}", error.Message, error.StackTrace);
}
else
{
str = string.Format("Application UnhandledError:{0}", e);
}
writeLog(str);
MessageBox.Show("发生致命错误,请停止当前操作并及时联系作者!", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
/// <summary>
/// 写文件
/// </summary>
/// <param name="str"></param>
static void writeLog(string str)
{
if (!Directory.Exists("ErrLog"))
{
Directory.CreateDirectory("ErrLog");
}
using (StreamWriter sw = new StreamWriter(@"ErrLog\ErrLog.txt", true))
{
sw.WriteLine(str);
sw.WriteLine("---------------------------------------------------------");
sw.Close();
}
}
}
}
转自:http://www.cnblogs.com/kevinGao/archive/2011/11/02/2233420.html
还找到一个例子:
你好!
一般使用Application的ThreadException事件,可以参考这个例子:
// Creates a class to throw the error.
public class ErrorHandler : System.Windows.Forms.Form {
// Inserts the code to create a form with a button.
// Programs the button to throw an exception when clicked.
private void button1_Click(object sender, System.EventArgs e) {
throw new ArgumentException("The parameter was invalid");
}
public static void Main(string[] args) {
// Creates an instance of the methods that will handle the exception.
CustomExceptionHandler eh = new CustomExceptionHandler();
// Adds the event handler to to the event.
Application.ThreadException += new ThreadExceptionEventHandler(eh.OnThreadException);
// Runs the application.
Application.Run(new ErrorHandler());
}
}
// Creates a class to handle the exception event.
internal class CustomExceptionHandler {
// Handles the exception event.
public void OnThreadException(object sender, ThreadExceptionEventArgs t)
{
DialogResult result = DialogResult.Cancel;
try
{
result = this.ShowThreadExceptionDialog(t.Exception);
}
catch
{
try
{
MessageBox.Show("Fatal Error", "Fatal Error", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Stop);
}
finally
{
Application.Exit();
}
}
// Exits the program when the user clicks Abort.
if (result == DialogResult.Abort)
Application.Exit();
}
// Creates the error message and displays it.
private DialogResult ShowThreadExceptionDialog(Exception e) {
string errorMsg = "An error occurred please contact the adminstrator with the following information:\n\n";
errorMsg = errorMsg + e.Message + "\n\nStack Trace:\n" + e.StackTrace;
return MessageBox.Show(errorMsg, "Application Error", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Stop);
}
}
using System.Collections.Generic;
using System.Windows.Forms;
using System.IO;
namespace GobalException
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
try
{
//处理未捕获的异常
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
//处理UI线程异常
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
//处理非UI线程异常
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
catch (Exception ex)
{
string str = "";
string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";
if (ex != null)
{
str = string.Format(strDateInfo + "异常类型:{0}\r\n异常消息:{1}\r\n异常信息:{2}\r\n",
ex.GetType().Name, ex.Message, ex.StackTrace);
}
else
{
str = string.Format("应用程序线程错误:{0}", ex);
}
writeLog(str);
MessageBox.Show("发生致命错误,请及时联系作者!", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
/// <summary>
///这就是我们要在发生未处理异常时处理的方法,我这是写出错详细信息到文本,如出错后弹出一个漂亮的出错提示窗体,给大家做个参考
///做法很多,可以是把出错详细信息记录到文本、数据库,发送出错邮件到作者信箱或出错后重新初始化等等
///这就是仁者见仁智者见智,大家自己做了。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
string str = "";
string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";
Exception error = e.Exception as Exception;
if (error != null)
{
str = string.Format(strDateInfo + "异常类型:{0}\r\n异常消息:{1}\r\n异常信息:{2}\r\n",
error.GetType().Name, error.Message, error.StackTrace);
}
else
{
str = string.Format("应用程序线程错误:{0}", e);
}
writeLog(str);
MessageBox.Show("发生致命错误,请及时联系作者!", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
string str = "";
Exception error = e.ExceptionObject as Exception;
string strDateInfo = "出现应用程序未处理的异常:" + DateTime.Now.ToString() + "\r\n";
if (error != null)
{
str = string.Format(strDateInfo + "Application UnhandledException:{0};\n\r堆栈信息:{1}", error.Message, error.StackTrace);
}
else
{
str = string.Format("Application UnhandledError:{0}", e);
}
writeLog(str);
MessageBox.Show("发生致命错误,请停止当前操作并及时联系作者!", "系统错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
/// <summary>
/// 写文件
/// </summary>
/// <param name="str"></param>
static void writeLog(string str)
{
if (!Directory.Exists("ErrLog"))
{
Directory.CreateDirectory("ErrLog");
}
using (StreamWriter sw = new StreamWriter(@"ErrLog\ErrLog.txt", true))
{
sw.WriteLine(str);
sw.WriteLine("---------------------------------------------------------");
sw.Close();
}
}
}
}
转自:http://www.cnblogs.com/kevinGao/archive/2011/11/02/2233420.html
还找到一个例子:
你好!
一般使用Application的ThreadException事件,可以参考这个例子:
// Creates a class to throw the error.
public class ErrorHandler : System.Windows.Forms.Form {
// Inserts the code to create a form with a button.
// Programs the button to throw an exception when clicked.
private void button1_Click(object sender, System.EventArgs e) {
throw new ArgumentException("The parameter was invalid");
}
public static void Main(string[] args) {
// Creates an instance of the methods that will handle the exception.
CustomExceptionHandler eh = new CustomExceptionHandler();
// Adds the event handler to to the event.
Application.ThreadException += new ThreadExceptionEventHandler(eh.OnThreadException);
// Runs the application.
Application.Run(new ErrorHandler());
}
}
// Creates a class to handle the exception event.
internal class CustomExceptionHandler {
// Handles the exception event.
public void OnThreadException(object sender, ThreadExceptionEventArgs t)
{
DialogResult result = DialogResult.Cancel;
try
{
result = this.ShowThreadExceptionDialog(t.Exception);
}
catch
{
try
{
MessageBox.Show("Fatal Error", "Fatal Error", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Stop);
}
finally
{
Application.Exit();
}
}
// Exits the program when the user clicks Abort.
if (result == DialogResult.Abort)
Application.Exit();
}
// Creates the error message and displays it.
private DialogResult ShowThreadExceptionDialog(Exception e) {
string errorMsg = "An error occurred please contact the adminstrator with the following information:\n\n";
errorMsg = errorMsg + e.Message + "\n\nStack Trace:\n" + e.StackTrace;
return MessageBox.Show(errorMsg, "Application Error", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Stop);
}
}
发表评论
-
Delphi中编程实现TWebBrowser查找及上一个、下一个功能
2016-08-18 13:58 1360代码比较简单,全部内容如下: //1:向下搜索;-1:向上 ... -
OLEDB的Excel的IMEX和HDR是什么意思
2013-11-23 21:15 2127转自:http://blog.csdn.net/baple/a ... -
c#获取应用程序目录
2013-10-23 22:35 1732string str1 =Process.GetCurrent ... -
Visual C# 方案 -> 文本操作快捷键
2013-10-07 22:34 2064转自:http://technet.microsoft.com ... -
Visual Studio 2005快捷键大全
2013-10-07 22:29 1647转自:http://www.cnblogs.com/mekon ... -
C#正则表达式测试小工具
2013-10-04 18:51 4783C#的正则表达式使用比较方便,但复杂的正则表达式还是需要测 ... -
C#正则表达式语法规则详解
2013-10-04 17:26 4052正则表达式通常包含字 ... -
Visual C# 中XML注释的使用(含注释在开发时显示换行)
2013-10-01 11:54 2469在C#智能注释时,常常希望它能在开发时显示为换行,使得提示更加 ... -
DevExpress汉化(WinForm)
2013-09-19 17:27 8305/* *隔壁老王原创,2013-09-21,转载请保留本人信息 ... -
VC中的CImage类
2011-04-17 22:19 8960今天查找如何实现 ... -
VC旋转图片
2011-04-16 16:45 3778转自:http://hi.baidu.com/sweetpig ... -
VC多线程编程(转)
2010-12-22 21:11 3210原文地址:http://www.cnblo ... -
Manifest的问题
2010-05-11 10:08 2307原始连接:http://www.zming ... -
Asp.Net中Word,Excel等office com组件操作权限的问题
2010-05-06 13:57 10210近日在打开原来写的一 ... -
如何注销windows server2003 服务器中的远程连接
2009-12-14 01:29 3813碰到超过远程连接数而无法连接服务器,可以采用如下方法解决 ... -
访问WebBrowser控件中的HTML源码
2009-12-11 22:13 4125为了实现在自己的程序中显示HTML文档,我们一般采用IE(In ... -
Makefile详解(3/3)
2009-12-01 12:32 1547一、函数库文件的成员 一个函数库文件由多个文件组成。你可以以 ... -
Makefile详解(2/3)
2009-12-01 12:29 2225八、目标变量 前面我们所讲的在Makefile中定义的变量都 ... -
Makefile详解(1/3)
2009-12-01 12:27 2211原文地址:http://blog.csdn ... -
OLE DB 的概念
2009-11-20 22:41 2115简单地说,OLE DB 是 ...
相关推荐
"winform捕捉全局异常"这个主题就是关于如何在WinForm应用程序中设置一个全局异常处理机制,以便在程序运行过程中捕获和处理未预期的错误,避免程序突然崩溃。下面将详细介绍这个知识点。 1. **异常处理基础**: ...
在C# WinForm应用开发中,全局错误处理是至关重要的,因为它可以帮助我们捕获和管理程序运行时可能遇到的各种异常,确保程序的稳定性和用户体验。本文将深入探讨如何实现C# WinForm的全局错误捕捉,并解释如何在发生...
总结来说,C# WinForm捕获全局变量异常的关键在于正确地订阅和处理`ThreadException`和`UnhandledException`事件,以及编写一个自定义的异常处理逻辑,这将极大地增强程序的健壮性和用户体验。记得在项目完成后,...
C# WinForm全局异常捕获方法 在主程序入口设置应用程序处理异常方式:ThreadException处理 处理UI线程异常和非UI线程异常 生成自定义异常消息,显示异常对象 备用异常消息:当ex为null时有效和异常字符串文本
在C# WinForm应用开发中,有时我们需要对用户的键盘和鼠标事件进行特殊的处理,比如拦截、过滤或修改这些消息。本文将深入探讨如何在VS2013环境下使用C# WinForm来实现这一功能。 首先,`PreFilterMessage`方法是...
`可使窗体捕获所有按键事件,然后在窗体的`KeyDown`事件中处理快捷键逻辑。 - 也可以通过`ToolStripMenuItem`或`ToolStrip`中的菜单项来定义快捷键,这些菜单项会自动处理快捷键事件。 5. 示例代码: ```csharp ...
在WinForm应用中,异常处理不仅仅是简单的try-catch-finally结构,还可以利用Application.ThreadException事件全局处理线程级异常。这个事件允许你在应用程序级别捕获和处理任何未处理的UI线程异常,避免程序意外...
"C# Hook 钩子"就是这样一个专题,它允许开发者创建一个全局监听程序,来捕获并处理系统的键盘和鼠标事件。 钩子是一种机制,由Windows操作系统提供,它允许应用程序设置一个或多个“钩子”,以便拦截特定类型的...
通过以上步骤,你可以在C# WinForm应用中实现全局快捷键功能。`KeyBoardHook`库提供了简单而强大的方式来管理和响应键盘输入,使得开发过程更加高效。记得在使用时遵循最佳实践,确保用户体验的流畅性。
2. **GlobalExceptionHandler**: 一个全局异常处理器,用于捕获未被捕获的异常并打印堆栈信息。 3. **LoggingModule**: 负责记录和输出日志,包括控制台输出和文件记录。 4. **UtilityFunctions**: 提供一些辅助函数...
在C#编程中,获取全局鼠标坐标是一项常见的需求,特别是在开发需要实时监控鼠标位置的应用时。全局鼠标坐标指的是鼠标在操作系统屏幕上的精确位置,不受任何特定窗口或应用程序限制。下面我们将详细探讨如何在C#中...
C#的try-catch语句用于捕获和处理异常,避免程序因未预期的错误而崩溃。 9. **设计模式**:良好的软件设计往往采用设计模式,如单例模式(用于管理全局资源)、工厂模式(用于创建对象)和MVC(模型-视图-控制器)...
在文件操作中,可能会遇到权限问题、磁盘满等问题,开发者需要捕获并处理这些异常。 9. **版本控制**:文件名为"WinSearchFile2.0",这可能表示程序的第二个主要版本,意味着它可能经历了迭代和改进,包括功能增强...
在本文中,我们将深入探讨如何使用C# WinForm来实现全键盘功能,并通过两个实例来进一步阐述这个主题。C#是一种面向对象的编程语言,它为Windows桌面应用程序开发提供了强大的支持,而WinForm则是C#中用于构建用户...
在C# WinForm中,这通常通过设计多个表单(Forms)来实现,每个表单代表向导的一个步骤。我们可以创建一个基类,包含公共属性和方法,如当前步骤、下一步、上一步等,然后让每个步骤的表单继承自这个基类。这样可以...
总之,通过以上知识点,我们可以创建一个C# Winform应用程序,使用全局键盘钩子来阻止特定键盘事件,如Win键和Alt+F4,以满足特定场景下的需求。不过,此类操作需要谨慎,过度限制用户交互可能会导致用户体验下降或...
4. 错误处理:提供统一的异常处理机制,便于全局错误捕获和处理。 三、多页面开发框架 SunnyUI.Net的多页面开发框架允许开发者轻松构建具有多个工作空间的应用程序,每个工作空间可以独立承载不同的功能模块。框架...
标题中提到的"C#键盘钩子实现全局快捷键",是指在C#编程中利用Windows钩子(Hook)机制来捕获和处理键盘事件,以此创建可以在系统范围内工作的快捷键。这种技术涉及到深入的系统底层交互,通常使用Win32 API来实现。...
在C#编程中,捕获键盘输入是一种常见的需求,特别是在开发需要监听用户键盘活动的应用时。键盘钩子(Keyboard Hook)是一种系统级别的机制,允许应用程序拦截和处理键盘事件,即使焦点不在该应用上也能实现。本篇...