码迷,mamicode.com
首页 > 其他好文 > 详细

异常捕捉try-catch-finally

时间:2015-06-25 23:01:32      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:

本文问答内容:

Q:catch和finally中的代码都在什么时候执行?

A:catch在try中出现异常时对异常进行捕捉;finally中的代码无论try中的代码是否发生异常都会执行,一般进行资源回收等。

1、异常的根类为Exception。异常类一般都继承自Exception

try

{

    String s = null;

    s.ToString();

}

catch (NullReferenceException ex)

{

    Console.WriteLine("为空"+ex.Message);

}

e就是发生异常的异常类对象,变量名只要不冲突就任意。

NullReferenceException都继承自Exception异常类

我们也可以自己创建一个异常类继承自Exception

 

创建自己的异常类

class ExceptionTest1 : Exception
{
public ExceptionTest1(String msg)
: base(msg)
{
}
}

throw 创建自定义异常类对象

static void SetAge(int nianling)
{
if (nianling < 0)
{
throw new ExceptionTest1("age不能小于0");
}
else
{
Program.age = nianling;//静态方法和静态属性不能用this,无效。使用类名点
}

}

 

 

2、在异常处理中,一旦try里面有问题了,放弃try代码块异常点之后的代码,直接跳到catch里面执行。如果try代码后还有代码,则处理完catch后还会继续执行。

3、多个异常的处理

try

{

int a = 10;

int b = 0;

Console.WriteLine(a / b);

int[] arr = { 1, 2, 3 };

Console.WriteLine(arr[3]);

}

catch (DivideByZeroException ae)

{

Console.WriteLine("除数不能为0");

}

catch (IndexOutOfRangeException ae)

{

Console.WriteLine("数组越界异常");

}

可以catch住父类异常,这样就可以抓住所有子类异常了,但是强烈不建议大家这样做,特别是不要没理由的catch(Exception ex)

4、好的异常处理习惯:

不要只是把异常catch住什么都不做或者只是打印一下,这不是正常的“异常处理”。

不知道怎么处理就不要catch,出错总比“隐藏报错信息”好。这样以为“不会出错了”,其实是把异常“吃掉了”,会让程序陷入逻辑混乱状态,要科学合理的处理异常。

可以try…catch;可以try…finally;也可以try…catch…finally

下面示例绝不允许!

try

{

string s=null;

s.ToLower();

}

catch(Exception ex)

{

throw ex;//抓住了异常,又再次抛出异常。我师父说教人这样写的这叫狗屎作者

}

finally

{

Console.WriteLine(“finally执行了”);

}

 

异常捕捉try-catch-finally

标签:

原文地址:http://www.cnblogs.com/sean100/p/4601107.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!