惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Stack Overflow Blog
Stack Overflow Blog
云风的 BLOG
云风的 BLOG
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Recent Announcements
Recent Announcements
Microsoft Security Blog
Microsoft Security Blog
Microsoft Azure Blog
Microsoft Azure Blog
J
Java Code Geeks
D
DataBreaches.Net
U
Unit 42
P
Proofpoint News Feed
I
InfoQ
Apple Machine Learning Research
Apple Machine Learning Research
Google DeepMind News
Google DeepMind News
博客园 - Franky
博客园_首页
IT之家
IT之家
博客园 - 叶小钗
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 【当耐特】
Hugging Face - Blog
Hugging Face - Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
阮一峰的网络日志
阮一峰的网络日志

博客园 - BigRain

小学生学习汉字,汉字抓取 c# regex regextools cache 访问频率的思考 python 百度cpc点击 20130118SQL记录 PPT辅助工具 检查外链的方法 webService启用cookie的另一种方法 百度调价HttpWebRequest 装饰者模式 第一个android程序闪亮登场 SQL 的一些批量插入和修改 职责链模式的运用 State Pattern 程序人生 SerialPort实现modem的来电显示 利用枚举进行状态的设计 singleton模式 在软件开发中的运用 我对当前项目的一些看法
闲话闲说——关于异常
BigRain · 2008-04-26 · via 博客园 - BigRain

前几天,公司的一个漂亮MM下午的时候突然脚就痛了,然后问她什么回事,她说她自己也不知道是为什么,脱了鞋一看,应该是纽到脚了,肿得很厉害。世界上的很多事情都是这样,你不去注意,不去想,它们几乎都是那样的熟悉,那样的一般,那样的正常。但是如果我们仔细的想想,或许就能悟出很多的道理来。假如我们的手被东西给割破了,流血了,我们就马上知道疼痛了,在大多数人眼中疼痛似乎不是个好东西。要是我们不会疼痛会不会很爽呢?答案是否定的。如果我们的手被割破了,我们不知道疼痛,那么我们就不会马上进行处理,结果肯定是出血过多而出现生命危险。我们有理由相信曾经有这样生物,受伤后却不没有知觉,终于经过漫长的自然选择,这些生物不存在了。所以,今天能看到这篇文章的人都是知道疼痛的。

上面的闲话说了这么多,我们现在进入正题。假如你的程序也如那些没有知觉的人一样,结果会怎样呢。不能否认程序在运行中一定会出现异常,如果程序出现了异常,我们却丝毫不能觉察到,时间一久,里面的数据的完整性一定会遭到破坏。很多新手,很怕异常,于是来个了很大的Try,然后catch下,里面什么都不做。这种做法很不推荐,既然捕获了异常,就要对它进行适当的处理。有异常出现,就说明程序在运行中出现了技术上的或者业务上的错误。异常的意图是让你知道发生了错误,而不是让你难堪。

来看段常见的代码:
                int test = 0;
                int result = 9 / test;
运行后出现异常:试图除以零。好丢人啊!改下

            try
            
{
                
int test = 0;
                
int result = 9 / test;
            }

            
catch
            
{
            }

别人看不到异常了。可是事实上我们程序确实出现了异常,我们不能自欺欺人。

try
            
{
                
int test = 0;
                
int result = 9 / test;
            }

            
catch (System.DivideByZeroException ex)
            
{
                
throw new DemoException(123"用户试图输入被除数'0',进行除法运算");//重新包装,冒泡
            }

            cath(DemoException ex)
        
{
                 
//假设这个异常我们能处理,就在这里直接处理了   
            }

            
catch (Exception ex)
            
{
                
throw new DomoException(000,ex);
            }

不但我们要善于利用.net的异常,也要学会自己产生异常。如:

publi int Age
{
  
get{return _Age;}
  
set
{
  
if(value<0)
    _Age
=0;
  
if(value>55)
    
throw new InputEmployeeException("年龄已经超过退休年龄");
  _Age
=value;
}

}

说到异常,很多人都知道要把异常log起来。主要原因就是屏蔽这些技术,让客户看到友好的提示,而将这些异常留给我们,以便我们更好的重构或者维护我们的程序。