关于Asp.Net的错误(异常)处理的设计方法???
问题1:
现在写一个类,类中是否所有的方法都得用 "try...catch "括起来?这样到底好不好?理由是什么?
据鄙人所知优点:对于异常的捕获得心应手,随时可以跟踪,方便解决,实用性强.可扩展性差.
缺点:代码量大
某人说过 "大量的复制粘贴的时候,就要考虑代码重用 ",我也是个懒人
==================================================================
问题2:
我将写一个错误处理的类,这个类用来处理所有页面级错误的异常,类中所有方法中不再写任何的 "try..catch ",调用类中方法的始终是页面,所以这些异常的处理将在异常类中完成.?这样合不合理?
鄙人所知的优点:代码量少,可扩展,灵活性不大好
==================================================================
问题3
你们在平常的项目开发中对错误处理是怎么来完成的??
怎么做才能更合理?更实用???
希望大家不吝告知小弟你们的想法和意见,先表示感谢
[解决办法]
先BS一下楼主抢沙发.
[解决办法]
很不地道
[解决办法]
try...catch一般情况是能不用就最好不用,通过返回值来判断,不得以再用
[解决办法]
1
在类里,也不是所有地方都要try catch 只有有可能出错的地方要加上,如文件读写,网络传输等不确定因素
2
效率上来说很快,但不是很好,代码不好找错
3
第一种吧.
[解决办法]
类中写try catch, 这样既可以自己出来异常,也可以threw给调用者。进可攻,退可守。
[解决办法]
说说自已的理解;
1:很不推存这种方法.第一感觉就是毫无目的.再是影响一点效率.
1:for(int i=0;i <1000000;i++){}
2:for(int i=0;i <1000000;i++){
try{}catch(Exception e){}
}
3:for(int i=0;i <1000000;i++){
try{
throw new Exception();
}catch(Exception e){}
}
1、2、3三者的执行时间比是5:6:5000
2:以前做的一个C/S项目就是独立写的一个异常类.复用性强啊.
[解决办法]
我也很想知道到底怎么弄比较好。
我的看法是,如果一个方法你确定不会出错,那么就不用try catch了。如果有可能出错,比如取DB时,就一定要用try catch。
try catch 到底放在什么位置这不好说,好象也没有这方面的文章,都是一个人一个做法。我觉得在大的项目中在每个地方都try catch不好,还是写个类来总体管理比较好。小的项目可以随意
[解决办法]
偶一般是写文件,操作数据库,网络连接用try catch多些。。
[解决办法]
不是很明白,mark
[解决办法]
LZ既然对所有的问题都知道各自的优缺点,那么就应该合理利用找寻平衡点。并形成自己的风格~
[解决办法]
学习了
[解决办法]
还是写个类来总体管理
这个怎么实现? 有人给说说么?
我只会第一种....
[解决办法]
还是说,只在最外层调用的地方try ..catch?
[解决办法]
关注~
[解决办法]
不是太清楚,,目前用的比较混乱。
[解决办法]
你还是用微软的企业库吧
那个东西真是好东西哦。
提供日志。异常。。
还支持异常短信,邮件。等方式通知管理员。。非常好用
绝对值得使用。我用了。。感觉太方便了。
http://www.cnblogs.com/Terrylee/archive/2006/08/01/464591.aspx
http://www.cnblogs.com/pw/archive/2006/06/27/437226.html
[解决办法]
up
[解决办法]
路过,学习!
------解决方案--------------------
类里面写吧,差不多,二个都有了吧?
[解决办法]
有可能发生异常的地方才使用, 如果想统一处理可以用 Spring.net 的 Throws Advice , 不过它也只能捕获到异常,并不能对异常做任何的处理,但你可以通过它统一做一些日志记录之类的事
[解决办法]
类中写try catch, 这样既可以自己出来异常,也可以threw给调用者。进可攻,退可守。
[解决办法]
我只知道用这些try catch但没想过如何好的使用他```
有好的想法的 贴出来```3Q
[解决办法]
向大家学习
[解决办法]
尽量不要使用try...catch能使用IF的都用IF!听别的高手说try...catch暂用资源比较大
[解决办法]
....一个程序不确定的地方很多吗?
一般是在跟用户交互 读用户的输入,网络操作,流,DB等IO操作时才会发生了,这些都是独立的模块 他们都会有自己的try catch ,不知道我说的对不对。
[解决办法]
在同一个项目中,两种方法都用..
[解决办法]
UP好贴啊学习了
[解决办法]
也不知道 try.. catch..后面再加个finally 好不好
[解决办法]
学习,我每次是try『 』 catch『 』 在这里能学到更好的方法
[解决办法]
也不知道 try.. catch..后面再加个finally 好不好
------------------------------------------------
正式发布的时候一定记得这些 ry.. catch..finally 都去了,影响性能。
[解决办法]
楼上的,为什么PETSHOP里面的数据库操用了
[解决办法]
楼主总结一下吧
[解决办法]
帮忙顶个
[解决办法]
顶了
[解决办法]
1、异常是一种程序自我保护的措施,除非有下列情况之一,否则不应捕获异常。
1.1、确定一定以及肯定执行的代码在正常情况下可能会出现某个异常,并且而且一定你知道你在干什么,你才可以处理这个异常。如网络通信的时候,连接忽然断开的异常,捕获这个异常并且重新连接。
1.2、确定你的代码在正常情况下可能会出现某个异常,并且这个异常所描述的信息不够详细。可以捕获这个异常,并使用更加适合的自定义异常类抛出,并且一定要将源异常放在InnerException中。如图片加载时,图片格式错误会出现内存溢出的异常,你可以用图片格式错误的异常代替。
1.3、当你需要对程序中所有出现的异常进行记录时,捕获异常,记录,并使用没有参数的throw;语句将源异常抛出。
2、异常本来就带有调用堆栈信息,不论在什么地方发现异常都能找到异常源。
3、捕获异常而不做正确的处理是编程的大忌,这样的代码写出来就是隐患。所以当你不打算把异常抛出时,问自己三次,是不是能处理所有的情况?否则你就该抛出去让别人处理。
4、轻易不要将异常另外包装,非要要包装时,一定要将源异常放在InnerException中。否则异常信息就丢了。不要胡乱包装异常。
5、尽量不要对异常进行任何破坏性的工作,这是非常危险的,对于初学者,建议你尽量避免抛出异常,例如使用TryParse而不是Parse,而不是去处理异常。