Frage zur Fehlerbehandlung

chriss_2oo4

Erfahrenes Mitglied
Hi!

ich lese erweiterte Dateiinformationen von Dateien aus. Dies läuft automatisch ab und deshalb bekomme ich eine Fehlermeldung weil teilweise Dateien gesperrt werden, sobald sie geöffnet sind -> beispielsweise Excel.

In diesem Fall kann ich die Dateinformationen nicht auslesen weil die Datei gesperrt ist, deshalb möchte ich diesen Schritt überspringen.

Beispiel:


Code:
            try
            {
               ...
               if( IsFileLocked(path) == false)
                 ReadFileInfos()
               ...
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Fehler");
            }

Methode, die prüft ob datei gesperrt ist:
Code:
        public static bool IsFileLocked(string path)
        {
            bool ret = false;
            Stream stream = null;

            try
            {
                stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.None);
            }
            catch
            {
                ret = true;
            }
            finally
            {
                stream.Close();
            }

            return ret;
        }


Ist eine Datei gesperrt, wird logischerweise eine Exception in der Methode IsFileLocked ausgelöst. Was ich aber nicht ganz verstehe ist, dass diese Exception auch von der oberen Fehlerbehandlung abgefangen und in der Messagebox angezeigt wird, obwohl diese bereits von der unteren Fehlerbehandung abgefangen wurde und nicht mit throw weiter geworfen wurde.

Normalerweise möchte ich eine Fehlermeldung anzeigen oder auswerten, aber in diesem Fall ist das nicht nötig.

Warum wird dieser Fehler weiter geworfen und wie kann ich das verhindern?

Vielen Dank und
Beste Grüße

Chriss
 
Zurück