学生信息管理系统
2016-05-11 14:38
295 查看
StudentInfo里面的第一层里面的类已经建好了。
StudentDAL里面第一层也建好了
App.Config详解如果项目以前没有配置文件,则默认的文件名称为“ app.config ”,单击“确定”。出现在设计器视图中的app.config 文件为:
staticvoid Main(string[] args)
{
AppDomain.CurrentDomain.UnhandledException +=new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
}
staticvoid CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Exception error = (Exception)e.ExceptionObject;
Console.WriteLine(“MyHandler caught : “+ error.Message);
}
“`
未捕获的异常,通常就是运行时期的BUG,于是我们可以在UnhandledException 的注册事件方法CurrentDomain_UnhandledException中将未捕获异常的信息记录在日志中。值得注意的是,UnhandledException提供的机制并不能阻止应用程序终止,也就是说,CurrentDomain_UnhandledException方法执行后,应用程序就会被终止
上面我们举的例子来自于控制台程序,UnhandledException可以在任何应用程序域中使用,在某些应用程序模型,如windows窗体程序,还存在ThreadException来处理 Windows 窗体线程中所发生的其未经处理的异常。即,在windows窗体程序中,使用 ThreadException 事件来处理 UI 线程异常,使用 UnhandledException 事件来处理非 UI 线程异常。ThreadException可以阻止应用程序终止。具体使用方法如下:
[STAThread]
staticvoid Main()
{
Application.ThreadException +=new ThreadExceptionEventHandler(UIThreadException);
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.Run(new ErrorHandlerForm());
}
privatestaticvoid UIThreadException(object sender, ThreadExceptionEventArgs t)
{
try
{
string errorMsg =”Windows窗体线程异常 : \n\n”;
MessageBox.Show(errorMsg + t.Exception.Message + Environment.NewLine + t.Exception.StackTrace);
}
catch
{
MessageBox.Show(“不可恢复的Windows窗体异常,应用程序将退出!”);
}
}
privatestaticvoid CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
try
{
Exception ex = (Exception)e.ExceptionObject;
string errorMsg =”非窗体线程异常 : \n\n”;
MessageBox.Show(errorMsg + ex.Message + Environment.NewLine + ex.StackTrace);
}
catch
{
MessageBox.Show(“不可恢复的非Windows窗体线程异常,应用程序将退出!”);
}
}
未捕获的异常,通常就是运行时期的BUG,于是我们可以在UnhandledException 的注册事件方法CurrentDomain_UnhandledException中将未捕获异常的信息记录在日志中。值得注意的是,UnhandledException提供的机制并不能阻止应用程序终止,也就是说,CurrentDomain_UnhandledException方法执行后,应用程序就会被终止
上面我们举的例子来自于控制台程序,UnhandledException可以在任何应用程序域中使用,在某些应用程序模型,如windows窗体程序,还存在ThreadException来处理 Windows 窗体线程中所发生的其未经处理的异常。即,在windows窗体程序中,使用 ThreadException 事件来处理 UI 线程异常,使用 UnhandledException 事件来处理非 UI 线程异常。ThreadException可以阻止应用程序终止。具体使用方法如下:
除了Windows窗体程序,再来说一下WPF程序。WPF的UI线程和Windows的UI线程有点不一样。WPF的UI线程是交给一个叫做调度器的类:Dispatcher。代码如下:
public App()
{
this.DispatcherUnhandledException +=new DispatcherUnhandledExceptionEventHandler(Application_DispatcherUnhandledException);
AppDomain.CurrentDomain.UnhandledException +=new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
}
“`
无论是Windows窗体程序还是WPF程序,我们都看到捕获的异常当中分为”窗体线程异常”和”非窗体线程异常”。如在Windows窗体程序中,如果在窗体线程中,
thrownew Exception(“窗体线程异常”);
将会触发ThreadException事件。
Thread t =new Thread((ThreadStart)delegate
{
thrownew Exception(“非窗体线程异常”);
});
t.Start();
将会触发UnhandledException事件,然后整个应用程序会被终止。
StudentDAL里面第一层也建好了
App.Config详解如果项目以前没有配置文件,则默认的文件名称为“ app.config ”,单击“确定”。出现在设计器视图中的app.config 文件为:
<? xml version = "1.0 "encoding = "utf-8 " ?> < configuration > </ configuration > ```可以设置数据库信息,比如字符串参数,数据库用户名密码,有些数据库可能不需要密码 **添加文件夹**直接把文件夹拖进去刷新然后包括在项目中。 **STAThread**简单的说法:[STAThread]指示应用程序的默认线程模型是单线程单元 (STA)。 **Application**Application 类属于System.Windows.Forms 命名空间。 1.publicstaticvoidEnableVisualStyles():此方法为应用程序启用可视样式。如果控件和操作系统支持视觉样式,则控件将以视觉样式进行绘制。若要使EnableVisualStyles 生效,必须在应用程序中创建任何控件之前调用它;EnableVisualStyles 通常是 Main 函数的第一行。当调用 EnableVisualStyles 时,无需单独的清单即可启用可视化样式。 [STAThread] static void Main() { Application.EnableVisualStyles(); Application.Run(new Form1()); } 简单的说就是让你的控件(包括窗体)显示出来。 2. Application.SetCompatibleTextRenderingDefault(false)大意如下: (1).作用:在应用程序范围内设置控件显示文本的默认方式(可以设为使用新的GDI+ ,还是旧的GDI) true使用GDI+方式显示文本, false使用GDI方式显示文本. (2).只能在单独运行窗体的程序中调用该方法;不能在插件式的程序中调用该方法. (3).只能在程序创建任何窗体前调用该方法,否则会引发InvalidOperationException异常. GDI:GDI是Graphics Device Interface的缩写,含义是图形设备接口,它的主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出。 GDI+(Graphics Device Interface plus)是Windows XP中的一个子系统,它主要负责在显示屏幕和打印设备输出有关信息,它是一组通过C++类实现的应用程序编程接口。顾名思义,GDI+是以前版本GDI的继承者,出于兼容性考虑,Windows XP仍然支持以前版本的GDI,但是在开发新应用程序的时候,开发人员为了满足图形输出需要应该使用GDI+,因为GDI+对以前的Windows版本中GDI进行了优化,并添加了许多新的功能。 **ThreadException和unhandledException**处理未捕获的异常是每个应用程序起码有的功能,C#在AppDomain提供了UnhandledException 事件来接收未捕获到的异常的通知 <div class="se-preview-section-delimiter"></div>
staticvoid Main(string[] args)
{
AppDomain.CurrentDomain.UnhandledException +=new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
}
staticvoid CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Exception error = (Exception)e.ExceptionObject;
Console.WriteLine(“MyHandler caught : “+ error.Message);
}
“`
未捕获的异常,通常就是运行时期的BUG,于是我们可以在UnhandledException 的注册事件方法CurrentDomain_UnhandledException中将未捕获异常的信息记录在日志中。值得注意的是,UnhandledException提供的机制并不能阻止应用程序终止,也就是说,CurrentDomain_UnhandledException方法执行后,应用程序就会被终止
上面我们举的例子来自于控制台程序,UnhandledException可以在任何应用程序域中使用,在某些应用程序模型,如windows窗体程序,还存在ThreadException来处理 Windows 窗体线程中所发生的其未经处理的异常。即,在windows窗体程序中,使用 ThreadException 事件来处理 UI 线程异常,使用 UnhandledException 事件来处理非 UI 线程异常。ThreadException可以阻止应用程序终止。具体使用方法如下:
[STAThread]
staticvoid Main()
{
Application.ThreadException +=new ThreadExceptionEventHandler(UIThreadException);
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.Run(new ErrorHandlerForm());
}
privatestaticvoid UIThreadException(object sender, ThreadExceptionEventArgs t)
{
try
{
string errorMsg =”Windows窗体线程异常 : \n\n”;
MessageBox.Show(errorMsg + t.Exception.Message + Environment.NewLine + t.Exception.StackTrace);
}
catch
{
MessageBox.Show(“不可恢复的Windows窗体异常,应用程序将退出!”);
}
}
privatestaticvoid CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
try
{
Exception ex = (Exception)e.ExceptionObject;
string errorMsg =”非窗体线程异常 : \n\n”;
MessageBox.Show(errorMsg + ex.Message + Environment.NewLine + ex.StackTrace);
}
catch
{
MessageBox.Show(“不可恢复的非Windows窗体线程异常,应用程序将退出!”);
}
}
``` staticvoid Main(string[] args) { AppDomain.CurrentDomain.UnhandledException +=new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); } staticvoid CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { Exception error = (Exception)e.ExceptionObject; Console.WriteLine("MyHandler caught : "+ error.Message); }
未捕获的异常,通常就是运行时期的BUG,于是我们可以在UnhandledException 的注册事件方法CurrentDomain_UnhandledException中将未捕获异常的信息记录在日志中。值得注意的是,UnhandledException提供的机制并不能阻止应用程序终止,也就是说,CurrentDomain_UnhandledException方法执行后,应用程序就会被终止
上面我们举的例子来自于控制台程序,UnhandledException可以在任何应用程序域中使用,在某些应用程序模型,如windows窗体程序,还存在ThreadException来处理 Windows 窗体线程中所发生的其未经处理的异常。即,在windows窗体程序中,使用 ThreadException 事件来处理 UI 线程异常,使用 UnhandledException 事件来处理非 UI 线程异常。ThreadException可以阻止应用程序终止。具体使用方法如下:
[STAThread] staticvoid Main() { Application.ThreadException +=new ThreadExceptionEventHandler(UIThreadException); Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); Application.Run(new ErrorHandlerForm()); } privatestaticvoid UIThreadException(object sender, ThreadExceptionEventArgs t) { try { string errorMsg ="Windows窗体线程异常 : \n\n"; MessageBox.Show(errorMsg + t.Exception.Message + Environment.NewLine + t.Exception.StackTrace); } catch { MessageBox.Show("不可恢复的Windows窗体异常,应用程序将退出!"); } } privatestaticvoid CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { try { Exception ex = (Exception)e.ExceptionObject; string errorMsg ="非窗体线程异常 : \n\n"; MessageBox.Show(errorMsg + ex.Message + Environment.NewLine + ex.StackTrace); } catch { MessageBox.Show("不可恢复的非Windows窗体线程异常,应用程序将退出!"); } }
除了Windows窗体程序,再来说一下WPF程序。WPF的UI线程和Windows的UI线程有点不一样。WPF的UI线程是交给一个叫做调度器的类:Dispatcher。代码如下:
public App()
{
this.DispatcherUnhandledException +=new DispatcherUnhandledExceptionEventHandler(Application_DispatcherUnhandledException);
AppDomain.CurrentDomain.UnhandledException +=new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
}
void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { try { Exception ex = e.ExceptionObject as Exception; string errorMsg ="非WPF窗体线程异常 : \n\n"; MessageBox.Show(errorMsg + ex.Message + Environment.NewLine + ex.StackTrace); } catch { MessageBox.Show("不可恢复的WPF窗体线程异常,应用程序将退出!"); } } privatevoid Application_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) { try { Exception ex = e.Exception; string errorMsg ="WPF窗体线程异常 : \n\n"; MessageBox.Show(errorMsg + ex.Message + Environment.NewLine + ex.StackTrace); } catch { MessageBox.Show("不可恢复的WPF窗体线程异常,应用程序将退出!"); } }
“`
无论是Windows窗体程序还是WPF程序,我们都看到捕获的异常当中分为”窗体线程异常”和”非窗体线程异常”。如在Windows窗体程序中,如果在窗体线程中,
thrownew Exception(“窗体线程异常”);
将会触发ThreadException事件。
Thread t =new Thread((ThreadStart)delegate
{
thrownew Exception(“非窗体线程异常”);
});
t.Start();
将会触发UnhandledException事件,然后整个应用程序会被终止。
相关文章推荐
- 简单工厂、工厂方法模式、抽象工厂模式
- C语言的数组名和对数组名取地址
- Rochambeau---poj2912||zoj2751(并查集类似于食物链)
- CodeForces 76E Points
- 利用JAVA Service Wrapper把JAVA程序做成windows服务
- "XXX"中无法使用ApplePay,检查此应用的设置并确定其设计可使用ApplePay
- 摩托车继承自行车和机动车
- unity 通过触摸屏幕产生射线实例化玩家
- 使用二级指针简化臃肿的代码
- PAT乙级1012-D进制的A+B (20)
- WS_DELIVERY_UPDATE 修改数量、过账日期并发货过账
- Windows 7 下 Ubuntu Kylin 16.04 LTS 双系统的安装
- Struts和SpringMVC两种MVC框架比较
- 关于recyclerview的横向布局的宽度以及item的点击事件的添加
- cordova No Content-Security-Policy meta tag found
- html5 PC端head部分整理
- Cannot read property 'add' of null
- 122 - Trees on the level(模拟内存池解法)
- 在linux下制作静态库和动态链接库的方法
- 在linux下制作静态库和动态链接库的方法