이것은 나쁜 생각입니까? 동일한 효과를 얻을 수있는 더 좋은 방법이 있습니까?중첩 된 Try..catch 블록을 사용하는 것이 좋지 않습니까?
// assume that "name" is a string passed as a parameter to this code block
try
{
MainsDataContext dx = new MainsDataContext();
try
{
Main m = dx.Main.Single(s => s.Name == name);
return m.ID;
}
catch (InvalidOperationException)
{
Guid g = Guid.NewGuid();
Main s = new Main
{
Name = name,
ID = g
};
dx.Mains.InsertOnSubmit(s);
dx.SubmitChanges();
return g;
}
}
catch (Exception ex)
{
// handle this
}
여기서 목표는 레코드의 ID를 얻는 것입니다. 그렇지 않으면 레코드를 생성하고 ID를 반환합니다.
dx.Dispose()는 무엇입니까? GC에 의해 자동으로 처리되면 안됩니까? LinqToSql을 사용하여 모든 try..catches의'finally' 섹션에 이것을 넣어야합니까? – Nate
@Nate, DataContext를 사용할 때 사용 문 **에서 (DataContext dx = new .......) **를 사용하는 것이 좋습니다. ** 이렇게하면 연결이 즉시 닫힙니다. 가능한 개체 및 처리됩니다. 우리가 여기서 try-catch를 사용하고 있기 때문에 우리가 연결을 처리하는 것에 상관없이 그것을 확실히 할 필요가 있습니다. 예외 여부. –
그러면 연결이 빨리 닫힙니다. GC가 결국 자체적으로 종료할까요? 이제 네가 지적 했으니, 네가 그것을 만들어 낸다. 나는 단지 그것이 필요한지, 아니면 좋은 생각인지 이해하지 못한다. – Nate