C # ruft den Verzeichnisnamen von der DirectoryNotFoundException ab

8

Ich habe eine Anwendung erstellt, die nach einigen Dateien in einigen Verzeichnissen sucht. Wenn ein Verzeichnis nicht vorhanden ist, wird DirectoryNotFoundException ausgegeben. Ich fange diese Ausnahme, aber es hat keine DirectoryName -Eigenschaft oder etwas ähnliches wie die FileNotFoundException (FileName). Wie kann ich den Verzeichnisnamen aus den Ausnahmeeigenschaften finden?

    
Sp3ct3R 23.06.2011, 20:57
quelle

8 Antworten

5

Es gibt keine Möglichkeit, dies nativ zu tun.

Fügen Sie diese Klasse irgendwo Ihrem Projekt hinzu:

%Vor%

Fangen Sie die Ausnahme und verwenden Sie die Typendung wie folgt:

%Vor%     
John Ruiz 23.06.2011, 21:19
quelle
4

Es sieht wie ein Hack aus, aber Sie können den Pfad aus Message property extrahieren. Was mich betrifft, würde ich lieber zuerst die Existenz des Verzeichnisses checken mit Directory.Exists Methode.

%Vor%     
Pavel Morshenyuk 23.06.2011 21:15
quelle
2

Es ist etwas inkonsistent, dass FileNotFoundException den Dateinamen hat, aber DirectoryNotFoundException hat nicht den Verzeichnisnamen, oder?

Hier ist eine Umgehung: Bevor Sie die Ausnahme auslösen, ordnen Sie den Namen des fehlgeschlagenen Verzeichnisses mithilfe der Data -Eigenschaft von Exception zu.

    
FishBasketGordo 23.06.2011 21:12
quelle
2

Speichern Sie unmittelbar vor dem Versuch, Dateien in einem Verzeichnis zu finden, den Namen des Verzeichnisses in einer Variablen. Dann beginne einen try-Block für den Code, der in diesem Verzeichnis aussieht. Sie haben nun den Verzeichnisnamen verfügbar, falls dieser Block Code werfen sollte.

Zum Beispiel:

%Vor%     
Randolpho 23.06.2011 21:13
quelle
1

Überprüfen Sie, ob es zuerst mit Directory.Exists

existiert     
DavidN 23.06.2011 21:12
quelle
1

Wenn Sie nur versuchen, diesen einen Fehler in Ihrer IDE zu stampfen, können Sie Folgendes versuchen:

Wechseln Sie in Visual Studio zu Debug -> Exceptions und aktivieren Sie das Kontrollkästchen Thrown für Common Language Runtime Exceptions . Dies führt Sie direkt zu einer Ausnahme, wenn es passiert, anstatt zu warten, um erwischt zu werden.

    
BinaryTox1n 23.06.2011 21:13
quelle
1

Es tut uns leid, einen alten Post zu finden, aber wie andere gesagt haben, ist es ziemlich dumm, dass DirectoryNotFoundException das Verzeichnis nicht als Eigenschaft hat, wenn FileNotFoundException das tut.

Ich habe es als Feature-Anforderung für .NET:

Ссылка

    
Kevin Adams 23.09.2013 21:27
quelle
0

Das Format des Message-Members der DirectoryNotFoundException, das von den meisten Directory-Klassenmethoden ausgelöst wird, lautet "Directory 'input' not found.". Es sollte nicht schwer sein, die Eingabe aus dieser Zeichenfolge zu extrahieren.

Frage: Warum brauchen Sie den Eingabeparameter von der Ausnahme, wenn Sie die Methode mit genau diesem Parameter aufgerufen haben?

    
Neowizard 23.06.2011 21:21
quelle

Tags und Links