DirectoryNotFoundException은 코드에서 접근하려는 디렉터리(폴더)가 실제로 존재하지 않을 때 발생하는 예외입니다. 파일 시스템 작업을 수행할 때 지정한 경로의 일부 또는 전체를 찾을 수 없는 경우 .NET 런타임이 이 예외를 던집니다.
DirectoryNotFoundException이 발생하는 경우
대표적으로 Directory.GetDirectories(), Directory.GetFiles(), FileStream 생성자 등 경로를 인자로 받는 메서드에서 존재하지 않는 디렉터리 경로를 지정하면 이 예외가 발생합니다.
아래 예제에서는 GetDirectories() 메서드를 사용하여 실제로 존재하지 않는 디렉터리에 접근하려고 시도합니다.
예제 코드
using System.IO;
using System;
class Program {
static void Main() {
Directory.GetDirectories("D:\\new\\");
}
}
위 코드에서 지정한 경로 D:\new가 시스템에 존재하지 않기 때문에 프로그램 실행 시 다음과 같은 예외가 발생합니다.
Unhandled Exception: System.IO.DirectoryNotFoundException: Could not find a part of the path
예외 방지 방법
이러한 예외를 사전에 방지하려면 디렉터리 작업을 수행하기 전에 Directory.Exists() 메서드로 해당 경로의 존재 여부를 먼저 확인하는 것이 좋습니다.
string path = @"D:\new\\";
if (Directory.Exists(path)) {
string[] dirs = Directory.GetDirectories(path);
} else {
Console.WriteLine("디렉터리가 존재하지 않습니다.");
}
또한 try-catch 블록으로 DirectoryNotFoundException을 처리하면, 예기치 않은 경로 오류가 발생했을 때 프로그램이 비정상 종료되지 않고 적절히 대응할 수 있습니다.