- 积分
- 26
- 在线时间
- 740 小时
- 主题
- 10
- 注册时间
- 2013-6-11
- 帖子
- 151
- 最后登录
- 2022-1-10
- 帖子
- 151
- 软币
- 3202
- 在线时间
- 740 小时
- 注册时间
- 2013-6-11
|
根据网上找到的资料和自己测试的结果总结的,感觉挺方便,还望高手指正.
1,自定义全局异常类
public class CustomExceptionHandler
{
public CustomExceptionHandler()
{
Application.ThreadException += new ThreadExceptionEventHandler(this.OnThreadException);
}
private void OnThreadException(object sender, ThreadExceptionEventArgs args)
{
try
{
string errorMsg = "程序运行过程中发生错误,错误信息如下:\n";
errorMsg += args.Exception.Message;
errorMsg += "\n发生错误的程序集为:";
errorMsg += args.Exception.Source;
//errorMsg += "\n发生错误的具体位置为:\n";
//errorMsg += args.Exception.StackTrace;
MessageBox.Show(errorMsg, "运行时错误", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch
{
MessageBox.Show("系统运行时发生致命错误!\n请保存好相关数据,重启系统。", "致命错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.Exit();
}
}
}
2,主窗体加载前创建自定义异常类实例
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
private static void Main()
{
XpoDefault.ConnectionString = ConnectionHelper.ConnectionString;
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
CustomExceptionHandler customException =new CustomExceptionHandler();
Application.Run(new Form1());
}
}
3,在逻辑层手动抛出可能出现的错误
public pcm_42 GetPcm42ByPartyCode(string code)
{
try
{
if (string.IsNullOrEmpty(code))
{
throw new Exception("查询条件客户代码为空请输入");
}
var query = pcm42service.GetCustomByPartyCode(code);
if (!query.Any())
{
throw new Exception("没有找到代码为:"+code+"的客户");
}
return query.Single();
}
catch (Exception ex)
{
throw ex;
}
}
这样在UI层如果该输入条件的地方没有输入,或没有查询到相关数据程序会自动弹出相应提示.
|
|