none
Warum wird der catch-Block nicht angesprungen RRS feed

  • Frage

  • Hallo,

    UWP verhält sich schon seltsam. Nachstehend eingefügte Funktion führt zu einem Fehler, obgleich diese Funktion in einen eigens gebildeten Testprogramm einwandfrei funktioniert. Was aber zusätzlich mehr als eigenartig ist, der catch-Block wird nicht angesprochen, auch springt das Programm nach dem Fehler nicht in die aufrufende Funktion sondern in eine weit vorher liegende Funktion.

    public static async Task<bool> WriteTextFile(string filename, string contents)
    {
         StorageFolder localFolder = ApplicationData.Current.TemporaryFolder;
         StorageFile textFile = null;
         try
         {
             textFile = await localFolder.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);
    
             using (IRandomAccessStream textStream = await textFile.OpenAsync(FileAccessMode.ReadWrite))
             {
                 using (DataWriter textWriter = new DataWriter(textStream))
                 {
                     textWriter.WriteString(contents);
                     await textWriter.StoreAsync();
                 }
             }
         }
         catch
         {
             return false;
         }
         return true;
    }
     

    Es gibt noch mehr Eigenarten, z.B. kann ich das Projekt nach einer Änderung nicht starten sondern muss eigens "Bereitstellen" aufrufen. Es hat auch nicht geholfen das Projekt komplett neu aufzusetzen.

    Wer weiß da Rat?

    Gruß Klaus

    PS: Der Fehler tritt in dieser Zeile auf:

    StorageFile textFile = await localFolder.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);

    Die Datei ist anschließend in dem Ordner TempState mit Größe 0.




    Dienstag, 11. Oktober 2016 11:34

Antworten

  • Hallo,

    das mit dem "Bereitstellen" könnte an einer "falschen" Einstellung im Konfigurations-Manager liegen. Den Manager findest du unter der Auswahl für die Plattform im Bild x86.

     


    Icon für UWP: https://www.microsoft.com/store/apps/9nblggh5fzpm

    Dienstag, 11. Oktober 2016 21:02
  • Hallo Klaus,

    zum einen solltest Du den Fehler bspw. mittels:

    catch( Exception ex )

    abfangen. Zum anderen wäre die Fehlermeldung an sich wichtig. Poste die bitte genau und vollständig.

    Falls das Verhalten komplett hinüber ist, solltest Du die gesamte Projektmappe mal bereinigen (Menü "Erstellen" in VS), die .suo Datei der Projektmappe mal löschen und ggfs. die Inhalte der BIN und OBJ Ordner der Projekte löschen. Evtl. hat sich da etwas verhakt.

    P.S.: Visual Studio 2015 Update 3 ist installiert? Falls nicht, hol das mal nach.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Dienstag, 11. Oktober 2016 14:54
    Moderator

Alle Antworten

  • Hallo Klaus,

    zum einen solltest Du den Fehler bspw. mittels:

    catch( Exception ex )

    abfangen. Zum anderen wäre die Fehlermeldung an sich wichtig. Poste die bitte genau und vollständig.

    Falls das Verhalten komplett hinüber ist, solltest Du die gesamte Projektmappe mal bereinigen (Menü "Erstellen" in VS), die .suo Datei der Projektmappe mal löschen und ggfs. die Inhalte der BIN und OBJ Ordner der Projekte löschen. Evtl. hat sich da etwas verhakt.

    P.S.: Visual Studio 2015 Update 3 ist installiert? Falls nicht, hol das mal nach.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Dienstag, 11. Oktober 2016 14:54
    Moderator
  • Hallo,

    das mit dem "Bereitstellen" könnte an einer "falschen" Einstellung im Konfigurations-Manager liegen. Den Manager findest du unter der Auswahl für die Plattform im Bild x86.

     


    Icon für UWP: https://www.microsoft.com/store/apps/9nblggh5fzpm

    Dienstag, 11. Oktober 2016 21:02
  • Hallo Stefan,

    Es gibt noch mehr Eigenarten, z.B. kann ich das Projekt nach einer Änderung nicht starten sondern muss eigens "Bereitstellen" aufrufen.

    Dies hat geholfen:

    Falls das Verhalten komplett hinüber ist, solltest Du die gesamte Projektmappe mal bereinigen (Menü "Erstellen" in VS), die .suo Datei der Projektmappe mal löschen und ggfs. die Inhalte der BIN und OBJ Ordner der Projekte löschen. Evtl. hat sich da etwas verhakt.

    Mein eigentliches Problem lag scheinbar daran, dass ich in der Abfolge der Aufrufe einmal nicht await verwendet habe. Diese Funktion unterbrach wohl vorzeitig die Ausführung der Write-Funktion. Es kam in dieser Funktion also eigentlich gar nicht zu einem Fehler, dadurch konnte der catch-Block auch nicht angesprungen werden. Nachdem ich dies geändert habe ist alles ok.

    Vielen Dank für deine Hilfe.

    Gruß Klaus

    Donnerstag, 13. Oktober 2016 08:48
  • Danke auch für diesen Hinweis!

    Gruß Klaus

    Donnerstag, 13. Oktober 2016 08:49