try..catch 问题

ouwusong 2007-01-04 10:37:25
那位大哥给我讲一下
try
{
...
}
catch(Exception ex)
{
throw ex;
}
与不加try..catch有什么区别,主要是弄不懂捕获异常后什么都不做,然后
重新抛出有什么用处?
...全文
565 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
superxiaomm 2007-01-04
  • 打赏
  • 举报
回复
重新抛出可以让上面去处理,你本block不处理不表示上面也不处理.
如果是比较共用的exception或者不是比较详细的exception,外面的frame都应该会处理的.这样设计比较合理
hongyelzg 2007-01-04
  • 打赏
  • 举报
回复
让上级去处理这个异常有时会很有用的.所以在捕获异常后重新抛出
hongyelzg 2007-01-04
  • 打赏
  • 举报
回复
一般捕获到异常的处理方法:
1.什么也不做,直接忽略异常
2.直接处理该异常(比如说执行些操作,弹出个人性化的对话框,提示出的问题)
3.重试操作,达到次数时处理异常
4.重新抛出异常,让上级去处理异常
5.记录到日志,以便查看.
Compass_ 2007-01-04
  • 打赏
  • 举报
回复
在调试的时候,如果没有自己去try,很有可能调试的时候看不到exception的内容。
再则就是你看到的本身就是一个demo,它表达的意思是一定要去try,给出的处理只是一个示范性的,当然你可以自己加别的异常处理逻辑。
写代码的时候加入适当的异常处理肯定是有好处的,事先将代码骨架放在那里,合适的时候再去写异常处理逻辑,这样更方便。
ouwusong 2007-01-04
  • 打赏
  • 举报
回复
我吧重要代码贴出来:微软的demo
1. public System.Data.DataSet Retrieve(string sql)
{
SQL.SqlConnection dbConn = null;
System.Data.DataSet ds = new System.Data.DataSet();;

try
{
dbConn = new SQL.SqlConnection (this.sConnection);

SQL.SqlCommand dbCmd;
dbCmd = new SQL.SqlCommand(sql, dbConn);

SQL.SqlDataAdapter dbAdapter;
dbAdapter = new SQL.SqlDataAdapter(dbCmd);

dbConn.Open();
dbAdapter.Fill(ds);
}
catch(Exception ex)
{
throw ex;
}
finally
{
try{ dbConn.Close(); }
catch{}
}

return ds;
}






2.集中捕获的语句为

Application.ThreadException += new ST.ThreadExceptionEventHandler(App.OnAppException);

// setup cleanup routine for normal app shutdown...
Application.ThreadExit += new System.EventHandler(App.OnAppExit);

既然在1中捕获的ex不做什么处理就throw,最终会由2中ThreadException 来集中处理,如果不捕获的话同样可以有2中的ThreadException 集中处理,那加它干嘛?
灰太狼 2007-01-04
  • 打赏
  • 举报
回复
在windows程序中,如果程序抛出的异常被系统捕获,就会提示程序出错,然后程序自动关闭,所以你一定要自己捕获异常,防止程序自动关闭,这是try catch的一个用途,再一个就是自定义错误信息。
ouwusong 2007-01-04
  • 打赏
  • 举报
回复
回 (ittt)
如果不加同用由它外层可以处理,那这不就没用了,我是从微软讲座中的demo中看到这个语句
ouwusong 2007-01-04
  • 打赏
  • 举报
回复
可能我没说清楚,我的疑惑在,捕获异常后就做一个重新抛出
相同异常的动作,别的啥都没有,这样由它的上怡层去捕获异常,
如果不加这个处理,有异常的话同样有它上一层处理,而且它抛出的
是一个相同的异常,那这个try..cacth快有什么作用?
青官司 2007-01-04
  • 打赏
  • 举报
回复
是抛出相同的异常 但这次抛出后就是被外层的try捕获了
用这种方法 就可以集中处理异常
ouwusong 2007-01-04
  • 打赏
  • 举报
回复
cath快中就一个throw ex;
xray2005 2007-01-04
  • 打赏
  • 举报
回复
获异常后可以显示你自定义的错误信息

使得用户获得教好的体验!
ouwusong 2007-01-04
  • 打赏
  • 举报
回复
问题是try 后又重新抛出相同的异常,
glacier111 2007-01-04
  • 打赏
  • 举报
回复
你也可以在报错后(就是在Catch里)实现一些功能操作
fencole 2007-01-04
  • 打赏
  • 举报
回复
获异常后可以显示你自定义的错误信息
glacier111 2007-01-04
  • 打赏
  • 举报
回复
用了try..catch 页面上不会报错

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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