请讨论try...catch..写在不同地方,有何利害?

insus 2009-04-23 11:23:02
今天有幸与网友讨论try{...}catch(...){...}的用法的问题
当时在QQ上,Insus.NET写了一些个人的看法,太概这样在底层类别中,逻辑层类别中不必要写或用try{...}catch(...){...}
只有在前台的xxx.aspx.cs中,才会去用try{...}catch(...){...}逻辑层类别的方法.如
Member objMember = new Member();
try
objMember.Add(...);
catch(Exception ex)
{
//alert(ex.message);
}

Insus.NET想法是否正确?
还是要直接把try{...}catch(...){...}写在底层或是逻辑层的类别中,在前台xxx.aspx.cs时直接引用方法即可.如:
Member objMember = new Member();
objMember.Add();

您习惯的写法?写在不同地方,有何利害?
...全文
1672 53 打赏 收藏 转发到动态 举报
写回复
用AI写文章
53 条回复
切换为时间正序
请发表友善的回复…
发表回复
bwangel 2009-04-29
  • 打赏
  • 举报
回复
楼上此言差矣, 用try catch就某种意义上来说,恰恰是为了避免让用户直接看到错误的细节.
这样即妨碍美观,也对安全有不利影响.
liangyaoshun 2009-04-26
  • 打赏
  • 举报
回复
~~~应该写的~~catch什么都不写~~真有错用户看不到~~
saisky 2009-04-26
  • 打赏
  • 举报
回复
我觉得实际情况的决定性要大些的
bwangel 2009-04-24
  • 打赏
  • 举报
回复
总之,try catch绝对不能写在循环里.
llsen 2009-04-24
  • 打赏
  • 举报
回复
看了我写的代码是太罗嗦了

我在第一家公司养成的习惯是
底层都加
try
{
}
catch(Excepiton ex)
{
throw ex;
}


只是将异常抛出去。
因为这里是最小的单位,要抛出的异常,自己可以预测,然后抛出不同的异常。还有可以有自己自定义的异常抛出
然后ui接收所有的异常
然后直接
show(ex.Message)
不然ui如果调用了很复杂的逻辑,里面很多地方,这是如果分类处理异常,会很麻烦,很可能提示的信息不友好。
springbell 2009-04-24
  • 打赏
  • 举报
回复
arjsyy 2009-04-24
  • 打赏
  • 举报
回复
ding
takeshe 2009-04-24
  • 打赏
  • 举报
回复
.........
NqIceCoffee 2009-04-24
  • 打赏
  • 举报
回复
这个没有定论吧?

哪里需要哪里写,例如:如果SQL语句出错,肯定是要关闭连接的,所以在数据库访问类中得用Try Catch

至于抛不抛出异常信息,就取决于自己了

当然,抛出是推荐的做法。
RHCL 2009-04-24
  • 打赏
  • 举报
回复
根据"预期错误"使用
CODE163 2009-04-24
  • 打赏
  • 举报
回复
try catch 效率底!
李世垚 2009-04-24
  • 打赏
  • 举报
回复
我只有在需要catch里面释放资源的时候才catch 其他的一律在顶层catch
叶子 2009-04-23
  • 打赏
  • 举报
回复
个人习惯在用户层抛出异常。
oec2003 2009-04-23
  • 打赏
  • 举报
回复
底层写try catch还是必要的,但是必须throw出来。表现层可以不throw了,直接处理
renjuwht 2009-04-23
  • 打赏
  • 举报
回复
mark
steven_007 2009-04-23
  • 打赏
  • 举报
回复
这个写在那里都可以,捕获后可以写日志。
SouthFlier 2009-04-23
  • 打赏
  • 举报
回复
我倾向于写在底层。
根据异常处理还是不处理,以及处理结果如何,然后返回结果给上层,而没有必要再上层捕获。
wuyq11 2009-04-23
  • 打赏
  • 举报
回复
一般来说只在最外层函数上才需要。因为该函数不能将Exception再往外抛了。所以需要Catch住做相应的处理

为了使用Finally来保证资源的释放。
jfd198512 2009-04-23
  • 打赏
  • 举报
回复
顶~~
Jinglecat 2009-04-23
  • 打赏
  • 举报
回复
没有绝对吧。

不管在哪里,假如我预期某段代码可能会发生异常,而这个异常应该成为一个有意义的错误,那么我就会 try-catch-rethrow MyExpection(mymessage, originalException)
加载更多回复(31)

62,054

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧