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#编程中遇到的一些异常及部分异常的解决方法

以下内容是在本人在C#编程中遇到的异常,针对部分异常给出了解决办法,但是此解决方法是否真的好用,有待进一步考证,仅供参考。 (1)“System.Invalid Operation Exceptio...
  • zhanghui962623727
  • zhanghui962623727
  • 2016年07月27日 15:20
  • 1503

C#中异常处理语句Finally

转自:http://zhidao.baidu.com/link?url=SsYrrtv7MchPg08WaUyF_KB3_BxPkwXrszswBlKS4Sb_0KKjNTZ4_rTjrFbGHhk5...
  • u010232305
  • u010232305
  • 2016年04月04日 11:56
  • 543

C# 事务异常TransactionScope处理

1、异常信息为:"MSDTC on server '{Server Name}' is unavailable."。      解决方案:我的电脑--右键管理--服务--启动Distri...
  • shumixys
  • shumixys
  • 2016年04月27日 19:50
  • 205

一个罕见C#异常的解决过程

近日在用C#编程过程中遇到一个非常罕见的异常,用了3天时间终于给解决掉。问题虽然解决,但是迷惑仍然未解,还往高手能指点迷津。 我用一个组合框来显示数据表中的数据,其中赋值语句是这样的(在加载主窗体过程...
  • juejue1984
  • juejue1984
  • 2006年07月17日 12:19
  • 2131

C# -- 异常和异常处理

C# 语言的异常处理功能可帮助您处理程序运行时出现的任何意外或异常情况。异常处理使用 try、catch 和 finally 关键字尝试某些操作,以处理失败情况,尽管这些操作有可能失败,但如果您确定需...
  • honey199396
  • honey199396
  • 2016年03月08日 10:03
  • 2484

C# WinForm捕获全局异常(捕获未处理的异常)

原文地址:http://www.cnblogs.com/wangshenhe/archive/2012/11/14/2769605.html 许多小公司的项目都缺少异常处理模块,我们也是。经...
  • mar_ljh
  • mar_ljh
  • 2015年05月05日 17:27
  • 4933

屏蔽DataGridView控件DataError 事件提示的异常信息

DataGridView.DataError 事件简介:出现问题,则外部数据分析或验证操作引发异常,或者,当尝试提交数据写入数据源失败。详细信息:参见MSDN this.dgvState.DataEr...
  • xunzaosiyecao
  • xunzaosiyecao
  • 2015年06月30日 18:01
  • 2452

C# WinForm捕获未处理的异常

using System; using System.Collections.Generic; using System.Windows.Forms; using System.IO; n...
  • SunCherryDream
  • SunCherryDream
  • 2014年06月12日 16:29
  • 471

C#.Net开发基于Oracle数据库系统常见异常处理

注意:先用单步调试,找出出错程序语句未注册XXX动态链接库 (未注册动态链接库文件或者该方法所在的类库不存在)未将对象设置引用到对象实例  (没有给对象正确赋值,可检查参数值,引用了未初始化的变量) ...
  • juejue1984
  • juejue1984
  • 2006年07月13日 08:30
  • 2076

C# 中的异常捕获和处理

异常是程序运行中发生的错误,异常处理是程序的一部分,错误的出现并不总是编写应用程序员的原因,有事应用程序会因为终端用户的操作而发生错误。无论如何,在编写程序前都应该预测应用程序和代码中出现的错误。 ...
  • Czhenya
  • Czhenya
  • 2017年07月29日 14:15
  • 334
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#讲座(3)--C#中异常的处理
举报原因:
原因补充:

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