很诱人的标题,今天不是给大家介绍,而是跟大家讨论些问题。

在做开发的这几年中,大大小小的项目也经历了很多,但无论那个项目中,都没有真正的对Exception进行完整的处理。虽然我们在学C#的时候,经常会看到此类的介绍,但我们真的学以致用了吗?

先来看看什么是Exception

Exception的解释是异常,每次当我们程序调式的时候,或多或少的会遇到它(如果你的程序没有遇到过,那你是天才)。Richer在它的书中,反复的提到,Exception是对原有接口的一种违背。一开始我反复不能理解,当我真的去考虑这个问题,深入这个主题的时候,我才明白了,它就是一种违背,参数错、对象空等等我们常见的异常,都是因为我们对接口的定义有违背了,所以系统才会抛出异常。

例:

var str = "int";

int i = Convert.ToInt32(str);

这个转换会抛出一个异常出来,虽然Convert.ToInt32(string str)是一个合法的方法,但是输入的str必须是能转换成Int值的,否则就回抛出异常。这是对它方法定义的一种违背。

Exception 不等于 Error

错误的解释很广泛,可能包含了异常,但是Exception 不等于 Error 的

稍微简单的介绍了一下异常,我想很多开发者一定对它非常熟悉了,但是真正对它的处理,我们做的并不好,很多人认为原有的系统异常已经足够我们去寻找bug了,我们只需要测试到位就可以了,但这是错误的思想,这也是可怕的思想,因为你不知道何时何地何处会抛出一个你不知道的异常,Win Form应用程序遇到了异常是非常可怕的,如果没有处理,就会直接关闭应用程序,在我们Web Application中,虽然HttpApplication会对我们未处理的异常封装,抛出一个UnhandlingException,对你要知道,你的网站可是面对着不同的用户,他们看到如此结果会如何呢?有人会说,我用错误页面来包装一下,这样看上去是友好化的。没错,这是一个解决方案,可你想过吗?你要如何去知道这些Exception呢?除非你的网站人员遇到了,会及时通知你,但如果是客户遇到呢?

我们不能守株待兔,我们是合格的程序员,我们的代码是我们的孩子,我们必须给他最好的,包括他生病,我们就得马上给他医治,如果没有生病,我们也必须打疫苗、提高抵抗力,也要及时想好应对方案,以免到时候会手忙脚乱。所以我们必须要有一套好的解决机制,才能应对各种突发事件。

真正完美的解决方案有吗?我可以很肯定的告诉你,没有。无论是开发何种应用程序,你的开发人员、环境、编程习惯、开发流程都会影响到这一套解决方案,如何解决,我的观点是:从人开始。

代码是死的,人是活的,我们必须时刻的意识到,我们是为创造程序而生的,不是为解决工作而做的,程序的美,是人之美,程序之bug,乃人之bug,一个程序的好坏,其实就能看出一个人的思维。应用程序发生异常,不代表是开发者的无能,这或许是一个好的体验机会,让你更好的能学习到解决之道。

在处理Exception的时候,我们需要注意几点,大家可以看另外一篇"设计异常解决方案的几点注意事项",这是最近看到一本书中介绍的,这是网上找来的中文版,非常好的。这些规范很大程度上让我们能处理很多Exception了,但是,还是那句话,从人开始,开发者的应用、开发者的思维都是很重要的,一个公司统一的技术规范,是非常有必要的,在其他代码中,你可以随意,但是在处理异常的时候,你必须按照这个规范来,因为他真的非常重要而又非常容易忽视的,每个公司都应该对其进行一定的培训,代码的Review,都是必不可少的。

单元测试

单元测试虽然也是一种解决方案,但并不是每个单元测试都会解决你系统中的Bug。

说了这么多,其实我想让大家了解异常的重要性,也让大家在开发过程中,能尽量想到这些,以免造成不可设想的后果。

后续我会给大家带来一定的解决方案,结合这几年的经验,开发一套通用的ExceptionHandling,当然这还需要大家对我的支持:P

出处:http://www.cnblogs.com/inday/archive/2009/04/17/1437657.html

最新文章

  1. int类型的正负数转换
  2. Java处理Radius access-challenge
  3. LIS+LCS+LCIS
  4. Poj 2996 Help Me with the Game
  5. js判断IE6(推荐方法一)
  6. 初步接触html心得
  7. PAT乙级-1047. 编程团体赛(20)
  8. python面试题整理
  9. php命令行按模板生成应用的入口文件
  10. hdu 5768 Lucky7 容斥
  11. Java Netty (2)
  12. maven最全教程
  13. nyoj-310-河南省第四届省赛题目-二分+dinic
  14. hdu-5810 Balls and Boxes(概率期望)
  15. 学习MongoDB 四: MongoDB查询(一)
  16. python打印对象的所有可操作内容
  17. 基于LumiSoft.Net.dll发、收、删邮件
  18. Vue.js系列之项目搭建(1)
  19. [Excel]拾取杂志图表的配色
  20. vue cli 3 +jquery

热门文章

  1. 在阿里云服务器上搭建 Apache Tomat 应用
  2. 第三天 RHEL7-Unix/Linux系统 介绍
  3. iOS开发调试技巧总结(持续更新中)
  4. IOS UI-瀑布流(UICollectionView)
  5. day31 堡垒机尾声 + Python与金融量化分析(一)
  6. java程序设计基础篇 复习笔记 第七单元&&第八单元
  7. 1D mesauring
  8. cscope使用记录
  9. jQuery 滑动选项卡SmartTab
  10. 《利用Python进行数据分析》笔记---第2章--来自bit.ly的1.usa.gov数据