나는 이것에 대해 나와 의견이 다른 친구가 있으며, 나는이 상황에서 누가 옳고 그른지에 관해서 약간의 피드백을 얻으 려하고있다. 네트워크/파일 시스템 호출로 작업 할 때 예외 (예방 유지 보수)에 대한 방어?
FileInfo file = ...;
if (file.Exists)
{
//File somehow gets deleted
//Attempt to do stuff with file...
}
내 친구가 지적한 문제
그래서 제가 존재를 확인 할 때 파일이 존재하는지? 삭제됩니다 바로 후에하면 파일을 확인 가능성을 방지하기 위해 아무것도 시도가 액세스 할 수 없다 "이다 예외가 발생하기 때문에 사전에 존재 여부를 확인하는 것이 가치가 있습니까? "내가 생각해 낼 수있는 유일한 점은 MSDN이 분명히 예제를 확인한다는 것입니다. 따라서 더 많은 내용이 있어야합니다. MSDN - FileInfo. 하지만, 그게 나 한테 궁금해할만한 가치가 있단 말이야?
나는 친구와 거의 일치합니다. 코드를 강건하게 만들기 위해서는 예외를 트래핑해야하는데, 이는'file.Exists' 비트가 중복되게 만듭니다. 반면에 많은 파일을 처리하는 경우, 그 중 많은 부분이 빠져있을 수 있으므로 예외 처리 메커니즘을 트리거하는 오버 헤드를 피하기 위해'file.Exists' 비트를 사용합니다. –
throw되는 예외가없는 예외 블록을 포함하는 것은 성능상의 비용이 들지 않는다는 것을 기억하십시오. 특히 파일의 경우 예외 처리를 사용하지 않는 것에 비해 어렵습니다. 그렇지 않으면 수표와 통화 사이에 수 밀리 초가됩니다. –