会员
周边
众包
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
寸芒
你可以这样理解 impossible(不可能)——I’m possible (我是可能的)
[原创]c#中的异常处理之基础学习
在编写代码的时候,除了关心一个程序是否正常运行,对于意料之外的突发问题也要能够预料,并能直观地提示!
--------
在编写代码的时候,除了关心一个程序是否正常运行,对于意料之外的突发问题也要能够预料,并能直观地提示!
所以,异常处理是非常重要的:
c#是面向对象的,所以,在c#中,所有的异常都是 System.Exception类的实例。其实呢,检查异常,除了:
try
{
}
catch
()
{
}
一般这个是用来检测整个程序的,局部检测的,我们可以使用关键词
checked
和
unchecked
,简单介绍下,一个例子:
using
System;
public
class
A
{
static
int
x
=
1111111111
;
static
int
y
=
1111111111
;
public
static
void
Main()
//
算术溢出
{
/**/
/*
检查异常
checked
{
Console.WriteLine(x*y);
}
*/
//
不检查异常,对于常量表达式的,一般都默认为unchecked的,不是常量表达式的那不一定,看情况
unchecked
{
Console.WriteLine(x
*
y);
}
}
}
-----
try
{
//
抛出异常,用throw 但是必须有表达式
}
catch
()
{
//
接收,可以有多个catch()来接受特定的异常,这个从从抛出到接收也叫做异常传播
}
finally
{
}
-------------
一个很好的例子,我摘下来了,说明了下关键:
using
System;
public
class
IsTest
{
//
函数
static
void
f()
{
try
{
g();
//
如果在try里使用throw ,必须有表达式
}
catch
(Exception e)
{
Console.WriteLine(
"
Exception :{0}
"
,e);
e
=
new
Exception(
"
f
"
);
throw
;
//
想一下,如果变成 throw e; 又是如何?那么,这个捕获的异常会因为在这个catch 中被改变而改变
}
}
//
一个直接抛出异常的函数g()
static
void
g()
{
throw
new
Exception(
"
g
"
);
}
//
主函数
public
static
void
Main()
{
try
{
f();
}
catch
(Exception e)
{
Console.WriteLine(
"
Excption in Main():{0}
"
,e.Message);
}
}
}
显示为:
Exception :g
Exception
in
Main():g
----------
如果,在这个异常定义的最好加上
finally
{}
会怎么样? 定义:无论什么,如果这个异常定义中有
finally
{}
的,都要被
调用的!我们也可以改变异常的输出信息,举个小例子:
using
System;
public
class
IsTest
{
public
static
void
Main()
{
try
{
//
抛出异常
throw
new
Exception(
"
哈哈,我自己定义的输出信息!
"
);
}
catch
(Exception e)
{
//
捕获异常,并输出
Console.WriteLine(e.Message);
}
//
有finally
finally
{
Console.WriteLine(
"
我就是还要输出信息!
"
);
}
}
}
posted on
2007-07-27 18:54
寸芒
阅读(
218
) 评论(
0
)
收藏
举报
刷新页面
返回顶部
导航
博客园
首页
联系
订阅
管理
公告