C#讲座(3)--C#中异常的处理

原创 2006年05月27日 09:00:00

异常概述exception 捕获异常及处理  跟踪trace

异常是当程序发生错误时产生的一种信号

异常的类型
每种异常类型都是一个类
两种大分类
system.systemException
system.applicationexception

处理方式
1异常被对象所表现而并不是错误代码
2异常的产生是通过throwing一个该异常的对象实现的
3异常的捕获是通过catch该异常的对象
4命名上可以读出是哪类异常

捕获异常try- catch
  把可能发生异常的代码放到try中
  用catch 得到结果

为每个可能的Exception定制解决方法
try
{
  s = << user’s input >>;
  i = int.Parse(s); // if this fails, .NET throws exception…
}
catch(FormatException)
{
  MessageBox.Show(“Please enter a numeric value.”);
  return;
}
catch(OverflowException)
{
  MessageBox.Show(“Value is too large/small (valid range ” + int.MinValue +
  “ ... ” + int.MaxValue + “).”);
  return;
}
catch(Exception ex)
{ // else something we didn’t predict has happened…
  string msg;
  msg = String.Format(“Invalid input./n/n[Error={0}]”, ex.Message);
  MessageBox.Show(msg);
  return;
}

常处理的系统流程
1自动抛出异常
2暗示

try -catch工作方式
1  无异常就跳过catch
2 异常时进入catch段
try
{
step1;
step2;
step3;
}
catch (Exception ex)
{
catch1;
catch2;
}
step4;

暗示
 在进行catch子句后程序继续执行
     除非catch中有return throw exit
  
可以嵌套

try
{
<< perform operation(s) >>
}
catch(Exception ex)
{
try
{
<< try various recovery strategies >>
}
catch
{
// none of the strategies worked…
throw ex;
}
}

异常捕获顺序
1 范围小的Exception放在前面

2如果Exception之间有继承关系,则把子类放在
前面的Exception子句中,把父类放在后面的catch中

try-catch-finally来确保一些收尾工作
finally{《close database》}

Throw Exception

跟踪Tracing
运行错误时输出信息

配置跟踪
<configuration>
<appSettings>
<add key="Traing" value="true">
</appSettings>
</configuration>
using T = System.Diagnostics.Trace;
public class DataAccess
{ ...
  public void Open()
{
try {
  T.WriteLineIf(Globals.Trace, “DataAccess.Open():”);
  T.Indent();
  T.WriteLineIf(Globals.Trace, “Connection string=...”);
...
}
catch(Exception ex) {
  T.WriteLineIf(Globals.Trace, ex.GetType() + “: ” + ex.Message);
  T.WriteLineIf(Globals.Trace, ex.StackTrace);
...
}
  finally {
  T.Unindent();
  T.Flush();
}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C#线程系列讲座(3):线程池和文件下载服务器

如果设计一个服务器程序,每当处理用户请求时,都开始一个线程,将会在一定程序上消耗服务器的资源。为此,一个最好的解决方法就是在服务器启动之前,事先创建一些线程对象,然后,当处理客户端请求时,就从这些建好...

C#线程系列讲座(3):线程池和文件下载服务器

转自:http://www.cnblogs.com/nokiaguy/archive/2008/07/18/1246299.html   如果设计一个服务器程序,每当处理用户请求时,都开始一...

C#线程系列讲座(3):线程池和文件下载服务器

http://www.cnblogs.com/nokiaguy/archive/2008/07/16/1244746.html    如果设计一个服务器程序,每当处理用户请求时,都开始一个线程,将会...

C#使用拉依达准则(3σ准则)剔除异常数据(.Net剔除一组数据中的奇异值)

3σ准则又称为拉依达准则,它是先假设一组符合正态分布的检测数据只含有随机误差,对其进行计算处理得到标准偏差,按一定概率确定一个区间,认为凡超过这个区间的误差,就不属于随机误差而是粗大误差(奇异值),含...

C# 应用程序异常统处理

  • 2015-11-04 09:18
  • 45KB
  • 下载

C#线程系列讲座(5):同步技术之Monitor

转自:http://www.cnblogs.com/nokiaguy/archive/2008/07/31/1257625.html  在上一讲介绍了使用lock来实现线程之间的同步。实际上...

C#异常处理.docx

  • 2012-08-25 17:09
  • 32KB
  • 下载

C#异常处理

  • 2014-07-25 11:06
  • 123KB
  • 下载

C#线程系列讲座(4):同步与死锁

转自:http://www.cnblogs.com/nokiaguy/archive/2008/07/25/1251756.html 虽然线程可以在一定程度上提高程序运行的效率,但也会产生一...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)