Hallo,
im generellen muß man bei IO-Zugriffen immer mit einer Exception rechnen, daher sollte man stets ein Exception-Handling in seinem Programm haben.
Dies bedeutet aber
nicht, daß man nun jede Methode und jeden Zugriff mit
try...catch umwickeln sollte, sondern meistens reicht ein allgemeines Abfangen in der GUI.
Bei
File.Delete wird ja auch keine Exception geworfen, wenn die Datei nicht existiert - wohl aber wenn das Verzeichnis nicht existiert.
Sollte also das Verzeichnis z.B. vom Anwender frei eingegeben werden können, so sollte man entsprechend Abfragen durchführen (am besten sogar per doppelter Sicherung, d.h. zuersteinmal dem Anwender gar nicht erst erlauben, ungültige Pfade anzugeben und zum anderen dann bei konkretem Zugriff mögliche Exceptions anfangen).
Einige Exceptions wie
ArgumentException,
ArgumentNullException oder
NullReferenceException sollte man nie explizit abfangen, denn diese sollten während des Debuggens schon gefunden werden und dann mit einer entsprechenden Abfrage vorher getestet werden (d.h. Programmierfehler sollte man also nicht kaschieren).