毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> net技术 >> 正文

C#代码中用try_catch和不用的区别

更新时间:2012-10-16:  来源:毕业论文

我一直不明白,在C#代码中,用try catch和不用 try catch 有上面区别,如果不用的话 ,CLR也会抛出异常啊,和用了之后抛出的异常有上面区别?
小弟我我一直不明白,在C#代码中,用try catch和不用 try catch 有上面区别,如果不用的话 ,CLR也会抛出异常啊,和用了try之后抛出的异常有上面区别?
catch异常之后可以把异常写进log 对于已经上线的不方便debug的应用来说这是种常见的做法 然后为了保证程序的正确性 再把异常抛出来
性能肯定是有影响的 try catch 其实出异常的时候clr会不断根据调用堆栈往上找 直到碰到一个catch块 然后再回到原来执行的地方继续往下跑 但是你写程序的时候是不知道你catch的地方和抛异常的地方到底隔了多远

这有两个概念——开发调试时期(Debug版本)、发布之后(Release版本)。

Release版本程序中通常至少会在最外层自己处理异常。例如主机客户端程序会捕获
C# codeAppDomain.CurrentDomain.UnhandledException
或者window service业务服务器会在Receive或者执行每一个消息时的最外层写
C# codetry...catch....
或者asp.net程序会在global.asax中写
C# code    void Application_Error(object sender, EventArgs e)
    {
        ..........................
    }
等等。为了给用户一个友好的错误界面,而且使服务继续进行下去。

否则,应用程序可能就会退出,windows service服务会停止,asp.net网站会重启(所有内存中的数据都丢失),等等。

但是在开发调试时,这时候的目的就是尽早地让异常出现,尽可能在异常时让vs调试器立刻停在出错的语句上,而不是自欺欺人地去隐藏异常。因此开发调试时是要取消try...catch....语句。

有些人有非常不好的想法,以为使用了try...catch....就可以隐藏程序的问题了。而它让程序以错误的数据、错误的状态继续运行,这种代码就是害群之马,使得之后的程序运行变得诡异、非常难以调试到导致问题的原始语句。碰到这种程序猿就要骂!

实际上就算程序运行是没有抛出任何异常,我们往往也在程序中写入很多 Debug.Assert 语句,让程序尽早抛出(迟早要抛出的)异常来。

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。