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

推荐订阅源

Jina AI
Jina AI
V
Visual Studio Blog
博客园 - 司徒正美
TaoSecurity Blog
TaoSecurity Blog
博客园 - 聂微东
IT之家
IT之家
博客园_首页
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cyber Attacks, Cyber Crime and Cyber Security
博客园 - Franky
雷峰网
雷峰网
罗磊的独立博客
S
Schneier on Security
C
Cybersecurity and Infrastructure Security Agency CISA
The Cloudflare Blog
T
Tailwind CSS Blog
B
Blog RSS Feed
H
Help Net Security
T
The Blog of Author Tim Ferriss
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
Threatpost
C
CERT Recently Published Vulnerability Notes
博客园 - 三生石上(FineUI控件)
P
Palo Alto Networks Blog
I
Intezer
G
GRAHAM CLULEY
Engineering at Meta
Engineering at Meta
S
Securelist
J
Java Code Geeks
V
V2EX
Y
Y Combinator Blog
Simon Willison's Weblog
Simon Willison's Weblog
L
LINUX DO - 热门话题
云风的 BLOG
云风的 BLOG
Spread Privacy
Spread Privacy
MongoDB | Blog
MongoDB | Blog
P
Privacy International News Feed
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
B
Blog
Forbes - Security
Forbes - Security
Google Online Security Blog
Google Online Security Blog
Help Net Security
Help Net Security
S
SegmentFault 最新的问题
N
Netflix TechBlog - Medium
Webroot Blog
Webroot Blog
Microsoft Security Blog
Microsoft Security Blog
SecWiki News
SecWiki News
Scott Helme
Scott Helme
aimingoo的专栏
aimingoo的专栏
N
News and Events Feed by Topic

博客园 - 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起来。主要原因就是屏蔽这些技术,让客户看到友好的提示,而将这些异常留给我们,以便我们更好的重构或者维护我们的程序。