delphi – 最佳做法做嵌套TRY/FINALLY语句
发布时间:2020-12-15 10:18:02 所属栏目:大数据 来源:网络整理
导读:嗨,什么是最好的方式做嵌套的try最后在delphi语句中? var cds1 : TClientDataSet; cds2 : TClientDataSet; cds3 : TClientDataSet; cds4 : TClientDataSet;begin cds1 := TClientDataSet.Create(application ); try cds2 := TClientDataSet.Create(applica
嗨,什么是最好的方式做嵌套的try&最后在delphi语句中?
var cds1 : TClientDataSet; cds2 : TClientDataSet; cds3 : TClientDataSet; cds4 : TClientDataSet; begin cds1 := TClientDataSet.Create(application ); try cds2 := TClientDataSet.Create(application ); try cds3 := TClientDataSet.Create(application ); try cds4 := TClientDataSet.Create(application ); try /////////////////////////////////////////////////////////////////////// /// DO WHAT NEEDS TO BE DONE /////////////////////////////////////////////////////////////////////// finally cds4.free; end; finally cds3.free; end; finally cds2.free; end; finally cds1.free; end; end; 你能建议一个更好的方法吗? 解决方法
以下内容如下:
var cds1 : TClientDataSet; cds2 : TClientDataSet; cds3 : TClientDataSet; cds4 : TClientDataSet; begin cds1 := Nil; cds2 := Nil; cds3 := Nil; cds4 := Nil; try cds1 := TClientDataSet.Create(nil); cds2 := TClientDataSet.Create(nil); cds3 := TClientDataSet.Create(nil); cds4 := TClientDataSet.Create(nil); /////////////////////////////////////////////////////////////////////// /// DO WHAT NEEDS TO BE DONE /////////////////////////////////////////////////////////////////////// finally freeandnil(cds4); freeandnil(cds3); freeandnil(cds2); freeandnil(Cds1); end; end; 这使它保持紧凑,并且只尝试释放所创建的实例。真的没有必要执行嵌套,因为任何失败将导致最终丢弃并执行所提供的示例中的所有清理。 就个人而言,我尽量不要在同一个方法中嵌套…除了try / try / except / finally方案之外,如果我发现自己需要嵌套,那么对我来说,这是一个很好的时间,认为重构到另一个方法调用。 编辑清理了一些感谢mghie和utku的评论。 EDIT将对象创建改为不引用应用程序,因为在此示例中它不是必需的。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |