怎样使用c#模拟一个异常使程序崩溃,还能弹出“错误报告”提示框

三五月儿 2015-10-12 08:47:30
怎样使用c#模拟一个异常使程序崩溃,还能弹出“错误报告”提示框,也就是想微软发送错误报告的提示框。
...全文
1177 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjq 2015-10-14
  • 打赏
  • 举报
回复
BTW,一定要在一个已经跑起来的窗口里(就是有一个消息循环),其次不能在vs里运行,需要编译后直接运行exe
wjq 2015-10-14
  • 打赏
  • 举报
回复
在一个winform之类的窗口中,添加一个按钮,按钮里加入以下一句话

System.Runtime.InteropServices.Marshal.Copy(new byte[5], 0, new IntPtr(1234), 5);

其中的数字可以随意发挥
失落的神庙 2015-10-13
  • 打赏
  • 举报
回复

//处理未捕获的异常
//Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
//处理UI线程异常
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
//处理非UI线程异常
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);


//main主函数中加



/// <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)
{
using (StreamWriter sw = new StreamWriter(@"ErrLog.txt", true))
{
sw.WriteLine(str);
sw.WriteLine("---------------------------------------------------------");
sw.Close();
}
}


mjp1234airen4385 2015-10-13
  • 打赏
  • 举报
回复
这是要造假么?
angel6709 2015-10-13
  • 打赏
  • 举报
回复
鱼和熊掌不可兼得
ajianchina 2015-10-12
  • 打赏
  • 举报
回复
非托管dll内部如果真的是没有提供内存释放,那么你现在做的都是徒劳。 不过兄弟,我给你想了个方法,你将下面的方法在程序中用个计时器,每隔一定时间清理一下,可能有意想不到的效果,你可以在客户的机器上实际测试一下看看。

[DllImport("kernel32.dll", EntryPoint = "SetProcessWorkingSetSize")]
public static extern int SetProcessWorkingSetSize(IntPtr process, int minSize, int maxSize);
/// <summary>
/// 释放内存
/// </summary>
public static void ClearMemory()
{
	GC.Collect();
	GC.WaitForPendingFinalizers();
	if (Environment.OSVersion.Platform == PlatformID.Win32NT)
	{
		App.SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);
	}
}
crystal_lz 2015-10-12
  • 打赏
  • 举报
回复 1

[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern int GetWindowText(IntPtr hWnd, ref string strBuffer, int nSize);

private void button1_Click(object sender, EventArgs e) {
string strText = string.Empty;
GetWindowText(this.Handle, ref strText, 10);
}

给你 一个 就算你 F5 运行 点击 按钮 直接程序退出 直接运行 exe 直接未响应 然后崩掉
至少我 win7 上是这样的
Poopaye 2015-10-12
  • 打赏
  • 举报
回复
引用 3 楼 tiana0 的回复:
这种压根不会弹出系统错误报告提示框,程序直接退出了。

不要在vs里启动,双击运行,可以的
三五月儿 2015-10-12
  • 打赏
  • 举报
回复
引用 1 楼 wyd1520 的回复:

百度搜全局异常捕获

我现在是要产生一个异常,能使程序崩溃,还能弹出系统错误报告。
三五月儿 2015-10-12
  • 打赏
  • 举报
回复
引用 2 楼 phommy 的回复:
throw new Exception(); 这种?


引用 2 楼 phommy 的回复:
throw new Exception(); 这种?


引用 2 楼 phommy 的回复:
throw new Exception(); 这种?
这种压根不会弹出系统错误报告提示框,程序直接退出了。
phommy 2015-10-12
  • 打赏
  • 举报
回复
throw new Exception(); 这种?
本拉灯 2015-10-12
  • 打赏
  • 举报
回复

百度搜全局异常捕获

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧