我在这里看到了类似的问题,但仍有一些我不明白的事情.据我所知,当你使用try-catchblock时,如果抛出异常,catch块将立即执行,并且不会执行catch相同代码块中的子句之后的代码.所以,如果我做到了,如果我们有:
try
{
// do something
// throw an exception for some reason
}
catch (Exceptiox ex)
{
// do something when there is and exception thrown
}
// some code that will never be runned if and exception was thrown above
Run Code Online (Sandbox Code Playgroud)
我不是100%确定catch停止在其范围之外进一步执行,但这是我的一个问题,所以如果我错了,请纠正我.
那么,如果你根本不需要返回任何值,那么return在catch块中使用的重点是什么?我在一些方法中看到这个来自我正在研究的继承代码.例如:
public void DeleteImage(AppConfig imageInfo, string imageName)
{
string imgPath = imageInfo.ConfigValue.ToString();
try
{
File.Delete(imgPath + "\\" + imageName);
}
catch (Exception ex)
{
logger.Error(ex.ToString());
return;
}
}
Run Code Online (Sandbox Code Playgroud)
除了记录错误之外,没有必要做任何事情.为什么然后使用return.这是一个错误吗?如果你没有return明确的话,方法不会完成吗?如果在catch子句之后有更多的代码,如果它return不在那里并且catch仅用于记录错误,它将被执行吗?
Jon*_*Jon 12
我不是100%确定捕获量在其范围之外停止进一步执行,但这是我的一个问题,所以如果我错了,请纠正我.
不,那是不对的.catch除非块内的某些代码改变流程(例如throw或return),否则执行将在块之后正常继续.
因此return ,如果您不希望继续执行,则必须这样做.即使块之后当前没有代码catch,恕我直言也可以更明确地说"处理这种类型的异常涉及在此之后不执行任何代码".
也就是说,你应该警惕catch (Exception ex)- 捕获所有类型的异常应该总是被质疑,并且几乎总是不是正确的事情(虽然在这种情况下它是用于日志记录,这是"允许的规则例外") .
| 归档时间: |
|
| 查看次数: |
3125 次 |
| 最近记录: |