[C#] Exception Frage, oder mehr..

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Neo311087, 2. Mai 2011 .

Schlagworte:
  1. 2. Mai 2011
    Exception Frage, oder mehr..

    Hallo zusammen,

    Da die Frage / das Thema, vielleicht etwas ausufert fang ich mal von vorne an.
    Für etwas rechenintensivere Arbeiten die ich automatisieren möchte brauchte ich eine
    neue Scriptsprache ( hab bisher nur "Anwendungen" in PHP programmiert ), hab mich hier für
    C# entschieden da ich dies auf der BS schon etwas kennengelernt habe.

    Mein erstes Projekt ist eine Konsolenanwendung die einen eingegebenen Pfad Rekursiv auf bestimmte Dateitypen ( *.rtf ) durchsuchen soll. Wenn sie welche findet dann soll die Datei nach einem bestimmten String durchsucht werden, wenn sie diesen findet soll dieser manipuliert werden und die Datei wird abgespeichert.

    Falls der String nicht gefunden wird, wird die Datei geschlossen und die Anwendung geht weiter auf die Suche...

    Nun steh ich schon vor dem ersten Berg: In diesen Unterordnern können sich Ordner befinden auf die ich nicht zugreifen kann ( fehlende Berechtigung zum Beispiel ), falls das passiert wirft mir die Anwendung eine Exception, diese lasse ich ausgeben und dann schliesst sich das Programm.

    Problem: Diese Ordner auf die ich nicht zugreifen kann / darf werden nicht verschwinden, folglich wird dieser "Fehler" immer wieder auftreten.
    gewünschte Lösung: Er soll trotz der Exception mit der Suche weitermachen...

    Ich hab mich zum Thema Exception in den letzten Stunden tot gegooglet, aber nirgendwo wird auf meine Situation eingegangen ( wobei mich das echt wundert, denn meine Anforderung ist ja wohl nicht so realitätsfern oder? )

    Ist mein "Wunsch" in / mit dem Thema Exceptions bedienbar oder muss da ein Workaround her?
    (á la: prüfe zuerst ob du den Ordner öffnen darfst, falls ja gib in ihn aus / suche da drin, falls nicht mach weiter... )

    Mein Code bisher ( bin ganz am Anfang )


    Code:
    using System;
    using System.IO;
    
    namespace BriefKorrektur
    {
     
     class Program
     {
     static void DirSearch(string sDir)
     {
     foreach (string d in Directory.GetDirectories(sDir))
     {
     Console.WriteLine(d);
     DirSearch(d);
     }
     }
     
     public static void Main(string[] args)
     {
     string pfad;
     int i = 1;
     try
     {
     while (i == 1)
     {
     Console.WriteLine("Gib einen Pfad ein:");
     pfad = Console.ReadLine(); 
     Console.WriteLine(pfad + " wurde ausgewählt!"); 
     DirSearch(pfad);
     } 
     }
     catch ( Exception e )
     {
     Console.WriteLine("Fehler aufgetreten: {0}", e);
     }
     }
     
     }
    }
    
    Achja, bitte kein Kommentar dazu wie ich die Exception abfang / ausgeb. Mein Programm wird so oberflächig gehalten das eine genauere Zuordnung des Fehlers keinen Sinn macht.

    Viele Grüße

    Neo
     
  2. 2. Mai 2011
    AW: Exception Frage, oder mehr..

    wenn ich dich richtig verstanden habe, dann solltest du einfach dein try-catch Block in die while Schleife packen und nicht umgedreht
     
  3. 3. Mai 2011
    AW: Exception Frage, oder mehr..

    Wie icq-light schon sagt, den ty-catch block in die while schleife nicht umgekehrt.
    Und dann würde ich die Zugriffsrechte überprüfen anstantt die Exception kommen zu lassen.

    Das hier hilft Dir bestimmt weiter:
    DirectoryInfo.GetAccessControl Method (System.IO)

    falls du dich doch für die Exception entscheidest. dann einfach im Catch block continue; schreiben, dann geht es zum nächsten.. (bin gerade unsicher ob das auch in While-Schleifen geht, habe es bisher nur in foreach-Schleifen gebraucht)

    MfG
     
  4. 15. Mai 2011
    AW: Exception Frage, oder mehr..

    Hi Neo311087,

    wenn die besagten Ordner nicht wieder besucht werden sollen, kannst du deren URL auch in eine "Nicht-wieder-besuchen"-Liste eintragen und vor jedem erneuten Zugriff die Liste nach neuen URL's durchsuchen lassen. Du kannst auch eine abstrakte Hashliste benutzen um die Zugriffszeit zu verkuerzen.
    Ansonsten benutz einfach die Loesung meiner Vorredner

    Gruss - Idefix!
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.