C#的异常处理机制中try块和catch块都是必不可少的,finally块是可以省略的 这句话对不对?

 我来答
百度网友cfe4d0f
推荐于2016-12-02 · TA获得超过1502个赞
知道小有建树答主
回答量:937
采纳率:100%
帮助的人:850万
展开全部

从C#的语法角度上讲是错误的... catch和finally至少声明其一就可以通过编译


不过实际业务处理碧丛中 try通常和catch匹配 这取决于具体的场合

因为finally是“一定”会执行的 如果你想跑完一段语句后 无论是否异常都执行下一段代码 则需要finally的支持 比如如下的伪代码:

var conn = new connection()
try {
  conn.open();
  conn.executeCommand(); //这里有可能会出现异常
}  finally {
  conn.close();
  conn.dispose();
}

这段语句执行时 如果中间发生异常 close和dispose依然会正确的执行 然后抛出异常 这就是隐藏了catch段

不过更好悔尺樱的书写方式通常是这样:

var conn = new connection()
try {
  conn.open();
  conn.executeCommand(); //这里有可能会出现异常
} catch (Exception) {
  throw;   //这里直接写throw  保持了异常出现原有的调用栈  这是区分throw ex;的写法
} finally {
  conn.close();
  conn.dispose();
}

即使不catch直接抛出 最好也要主动的声明出困肆来 避免语义上的混淆并且增强代码可读性——后面的人可不知道你是不想catch还是忘记catch。


当然 如果你不需要finally这种特性  只要使用try catch就够了 也没有问题

布萌布咕咕
2014-05-20 · 超过27用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:51.1万
展开全部
错误,catch和态郑finally可丛悄以只有一个渗闭渣。
try
{
MessageBox.Show("OK");
}
finally
{
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式