日期:2014-05-18  浏览次数:20973 次

请教:如何摒弃Try...Catch...
我是个C#开发熟手,做了不少小项目,基本上项目对于系统的性能要求不高。所以在代码中,我曾经使用了大量的try...Catch...模式。
据我所知这是一种很占用系统资源的容错方式,当系统性能要求提高时,很可能成为系统致命bug。所以想在此请教各位,如何使用其它方式,使得系统压力降低,运行速度增快,等。


小弟在此谢过,走过路过都有分。


小弟的使用例子:
用于确定txt中的是数字,当然这里也可以使用正则表达式。
private   bool   DateConvert()
{
        string   tmpErrorMsg   =   " ";
        try
        {
                int.Parse(txt.Text.Trim());
                return   true;
        }
        catch   (Exception   exc)
        {
                ErrorStr   =   tmpErrorMsg   +   exc.Message.ToString();  
        }
        return   false;
}

用于确定ds.Tables[0].Rows[0][ "Tel "]不全是由数字组成的。
try
{
        int.Parse(ds.Tables[0].Rows[0][ "Tel "].ToString());
        objExcelRange.set_Item(i,   j,   " ' "   +   ds.Tables[0].Rows[0][ "Tel "].ToString());
}
catch
{
        objExcelRange.set_Item(i,   j,   ds.Tables[0].Rows[0][ "Tel "].ToString());
}


------解决方案--------------------
//.net2.0新增
int.TryParse(...)

//在程序中不妨用用断言,来减少过多的判断
------解决方案--------------------
你可以增加一些判断,来减少一些异常,但是异常是无法避免的,所以只能减少。
也可以统统抛给某一个try{}catch(){}去处理

反正是尽量减少异常的出现就好了
------解决方案--------------------
同意楼上的

另如果是内部输入的数据的话可以考虑尽量不用Try,内部输入还是可以信任的
------解决方案--------------------
try...Catch...模式。
据我所知这是一种很占用系统资源的容错方式,当系统性能要求提高时,很可能成为系统致命bug
=================

问一下 微软
如果象你 说得那样啊。为什么微软不摈弃呢 而且还在用呢

毕竟优点 多余缺点。。。。。。。。。。
------解决方案--------------------
只能重新编码了

建议在一般的方法中不用try catch 用if之类的 不合适就throw异常
在最后调用的方法 一个大try catch 然后把异常记录在log中
------解决方案--------------------
写自定义异常类,统一处理
------解决方案--------------------
C#开发熟手?
建议就不要用C#了
呵呵C++也有try...Catch...模式啊
你还是好好看书学习吧
不是try...Catch她不好,是你不会用而已
------解决方案--------------------
学习了
------解决方案--------------------
try...Catch... 尽量用在数据操作,服务操作中,象页面判断之间判断 最好js 判断
------解决方案--------------------
对于经常发生异常的地方,先判断一下,对于其他地方,就不用管了
------解决方案--------------------
既然是熟手了,为何还无法理解 try-catch 的优劣? 还没有如何选用之的心得?

那么,我个人强烈建议 LZ 购买 Jeferry 的 《.Net 应用框架程序设计》 1.x 版本 译者 李建忠

已出最新版本基于 .net 2.0 《 框架设计(第2版):CLR VIA C# 》
http://www.china-pub.com/search/power_search/power_search.asp?key1=CLR+VIA+C%23&pz=1

似乎后者,翻译的口碑没有前者好。

BTW,由于新版此书翻译事宜,李建忠老师还与出版社发生“矛盾”,最后李老师没有接稿 ...
唉,现在的出版社啊 ...
------解决方案--------------------
外部输入可以先断言,不合适,就抛出;