Chu*_*ros 12 c# return finally try-catch
这些风险中的任何一个都有风险吗?一个更好吗?或者它是你打印出来并投掷飞镖决定的东西之一?
我想这样做,因为我明白了最终的工作方式:
try {
stuff that changes something...
}
catch (System.Exception ex) {
something.worked = false;
something.err = ex.Message;
}
finally {
stuff.close();
return something;
}
Run Code Online (Sandbox Code Playgroud)
但我见过:
try {
stuff that changes something...
return something;
}
catch (System.Exception ex) {
something.worked = false;
something.err = ex.Message;
return something;
}
finally {
stuff.close();
}
Run Code Online (Sandbox Code Playgroud)
aba*_*hev 17
你不能return来自finally.您将收到编译器错误:
控制不能离开finally子句的主体
如果目标类实现,IDisposable那么我会做下一步:
using (stuff s = new stuff())
{
return stuff;
}
Run Code Online (Sandbox Code Playgroud)
要么
using (stuff s = new stuff())
{
try
{
// do stuff
return stuff;
}
catch (Exception ex)
{
// do logging or another stuff
return something;
}
}
Run Code Online (Sandbox Code Playgroud)
Dispose()如果需要/可能的话会打电话给你.
Tim*_*mes 17
就我个人而言,我也不会这样做
try {
stuff that changes something...
}
catch (System.Exception ex) {
something.worked = false;
something.err = ex.Message;
}
finally {
stuff.close();
}
return something;
Run Code Online (Sandbox Code Playgroud)
同样在finally语句中,检查是否需要关闭/处理对象,因为它们可能从未打开/设置,如果它们已经失败.
另见这里从try catch finally块返回是不好的做法?
| 归档时间: |
|
| 查看次数: |
19246 次 |
| 最近记录: |