中的异常处理一呢

激光设备2021年09月06日

一 、令人痛苦的程式化错误处理 异常还没出现前,处理错误最经典的方式就是使用错误代码检查语句了。例如

public sealed class Painful

{

...

private static char[] ReadSource(string filename)

{

FileInfo file = new FileInfo(filename);

if (errorCode == 2342) goto handler;

int length = (int)ngth;

char[] source = new char[length];

if (errorCode == -734) goto handler;

TextReader reader = enText();

if (errorCode == 2664) goto handler;

ad(source, 0, length);

if (errorCode == -5227) goto handler;

ose();

Process(filename, source);

return source;

handler:

...

}

}

这种编码方式单调乏味,翻来复去,难以使用,看起来非常的复杂,而且还使得基本功能很不清晰。并且还很容易忽略错误(故意或者偶尔的遗忘)。现在好了,有很多来处理这种情况,但是其中必有一些处理方式要好过其他的。

二、关系分离

异常所能做到的最基本的事情就是允许你将错误和基本功能分离开来。换句话,我们能将上面的改写如下:

本报崇仁讯(通讯员崔伟群、陈胜孙)“我们能经常看到‘爸爸’、‘妈妈’ ...

public sealed class PainLess

{

public static int Main(string[] args)

{

try

{

string filename = args[0];

char[] source = ReadSource(filename);

Process(filename, source);

return 0;

}

catch (SecurityException caught) { ... }

catch (IOException caught) { ... }

catch (OutOfMemoryException caught) { ... }

...

}

private static char[] ReadSource(string filename)

{

FileInfo file = new FileInfo(filename);

int length = (int)ngth;

char[] source = new char[length];

TextReader reader = enText();

ad(source, 0, length);

ose();

return source;

}

}

在转化过程中,需要注意以下几点:

1.以前使用数字作为错误代码来描述错误(很失败的一种做法,谁知道2342是什么意思呢?),现在使用命名的异常类来描述(例如:SecurityException)。

2.异常类彼此之间的关系并没有紧密的联系在一起。相反的,用来描述某一类错误的整数代码在整个错误描述代码中必须是唯一。

3. 在ReadSource方法中没有没有抛出详细说明。在C#中抛出说明并不是必须的。

然而,最值得注意是:比较两段代码,ReadSource变得非常的清晰、简单、明了。它现在仅包含需要实现其基本功能的语句,没有表现出明显的错误处理。这是可以的,因为如果出现异常,调用堆栈就会自我展开。这个版本是我们想要的“理想”版本。

然而,异常允许我们接近这个ReadSource的理想版本,同时,又阻止我们到达它。ReadSource是一个编码例子,它请求资源(一个TextReader),使用了资源(Read),并且释放了资源(Close)。

问题是如果在请求资源的过程中出现了异常,那么资源将不会被释放。这个问题的解决是本文的一部分。不过,“理想“中的ReadSource版本仍然是有用的。我们将使用它做为下面几个版本的ReadSource评价的参照物。

嗓子哑了怎么快速恢复
天津去哪里看白癜风
汕尾白癜风治疗医院有哪些
相关阅读
广东药科的大学辅导员获第九届广东高校辅导员素质能力大赛二等奖

近日,第九届广西高等院校教师大学本科性战斗能力总四强赛圆满开端,经过...

2023-09-15
一年自然流产2次、胎盘畸形,28岁的她如何成功让宝宝着陆的?

对于大多数女人来讲,和爱的人在夫妇有一个爱的粉末,是一件很令人期望和...

2023-09-10
乌克兰女孩安娜:嫁给大12岁河南小伙,婚后来时农村称:生活很幸福

所爱隔山海,山海均可平。 真正的爱情,就已是两个人隔着千山万海,也可...

2023-09-04
爱尔兰博主brittanybathgate基础单品搭 158cm矮个子女生的穿搭技巧

今天T爷给大家概述来自英国的ins时尚博主Brittany,虽然是美国人,但她薄板偏...

2023-09-02
搬家入宅不能马虎,要忽略这几件事!

在当中国的传统民俗当中,一家人是一件大事,乃“乔迁之喜”,而今就有一...

2023-08-31
原先上任领导,做好这六点,不仅能变得成熟稳重,还能提高素养

对于一些合格的领导成员者来说,他们给人的好像通常十分清秀,在来作事或...

2023-08-30
友情链接