黑马程序员技术交流社区
标题:
C#关于异常
[打印本页]
作者:
穷傻呆丑萌
时间:
2013-9-7 13:55
标题:
C#关于异常
异常机制是在程序出现错误时,程序该如何处理,它提供了程序退出的安全通道。不要应用异常处理机制来对付突然出现在程序中的所有错误。因为异常发生时,它会确认是什么异常类型,这通常要花费一定的时间,尽可能以编程的方式判断可能发生的错误或事件。
异常处理格式:
Try
{
//
程序代码块;
//
尽力执行该代码块,并捕捉可能发生的异常
}
catch
(
Exception e
)
{
//
异常处理代码块;若异常不被处理,程序将会中止。
//
一个
try,
可对应多个
catch,
异常处理机制会搜寻参数与异常类型相符的,进入那个
catch
从句。必须正确排列捕获异常的
catch
子句
,
范围小的
Exception
放在前面的
catch
。即如果
Exception
之间存在继承关系,就应把子类的
Exception
放在前面的
catch
子句中。
//
若当前处理不了该异常,那么把它再抛出。也可在此再抛出异常,实现对错误的封装;
//
没有表达式的
throw(throw;)
,将会再次抛出被
catch
捕捉到的异常。
//
使用不带参数的
catch
子句,则可以捕获任意类型的异常
}
finally
{
//
存在于异常处理的标准事件流之外。
//
用来清理资源或还原相关设置信息等其他操作
//
是否发生异常,均要执行的代码块;
}
throw
用于引发异常,可引发预定义异常和自定义异常。
如果方法遇到一个不知道如何处理的意外情况(
abnormal condition
),那么它应该抛出异常。
throw
语句无条件地把控制转移到别处,若有
try{}catch{},
它将转移到能处理这个异常的第一条
catch
子句。
在做异常处理的时候,最好能在应用程序所有的入口处(事件处理函数,主函数,线程入口)使用
try-catch
。
但是不要在程序构造函数入口处添加
try-catch
,因为此处产生异常,它自己并没有能力来处理,因为它还没有构造完毕,只能再向外层抛出异常。要避免使用了
try-catch
但没有处理异常的情况,否则就相当于给异常放行。
作者:
淡忘回忆
时间:
2013-9-10 19:45
补充一下
try {}里有一个return语句,那么紧跟在这个try后的finally {}里的代码会不会被执行,什么时候被执行?
会执行,在return后执行。
static void Main(string[] args)
{
Console.WriteLine(GetIt());
Console.ReadKey();
}
static int GetIt()
{
int i = 8;
try
{
i++;
Console.WriteLine("a");
return i;//把返回值设定为i,然后“尽快”返回(没啥事就回去吧)
}
finally
{
Console.WriteLine("b");
i++;
}
}
复制代码
以上代码执行结果是ab9;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2