Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [C#] Try...catch

  1. #1

    [C#] Try...catch

    Salve...

    vorrei avere dei ragguagli con il try-catch.

    La mia applicazione è articolata così:

    public static void Main()
    {
    // Ometto la dichiarazione del FileStream per la scrittura del file di log
    Principale1();
    Principale2();
    }

    public static void Principale1()
    {
    try
    {
    funzione2();
    funzione3();
    funzione4();
    }

    catch { }
    }

    All'interno delle funzioni 2,3 e 4, qualora determinati controlli non dessero il risultato sperato, scrivo in un file di log:
    wrLog.WriteLine("ERRORE ALLA RIGA x");

    Come fare, una volta elaborate queste funzioni, per uscire dal programma (e quindi non accedere alla funzione Principale2() del Main) se ho scritto qualcosa sul file di log?

    Grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Fai attenzione a dove posti: C# è un linguaggio del .NET Framework, quindi va discusso nel forum "VisualBasic e .NET Framework".

    Ti sposto.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Le funzioni funzione2, funzione3 e funzione4 dovranno sollevare un'eccezione (con throw) se qualcosa va storto; a mio avviso, tra l'altro, non devono essere loro a scrivere nel file di log, ma piuttosto il codice contenuto nel blocco catch.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Ma se vado nel blocco catch (e quindi esco dalla funzione Principale1()), il programma entra nella funzione Principale2() ed io non voglio ciò...voglio che esca direttamente dal programma, salvando cmq i dati nel file di log

  5. #5
    Giusto, ho letto male... be', puoi sempre risollevare un'eccezione, tipo così:
    codice:
    public static void Main()
    {
         // Ometto la dichiarazione del FileStream per la scrittura del file di log
         try
         {
              Principale1();
              Principale2();
         }
         catch(Exception ex)
         {
              //...
         }
    }
    
    public static void Principale1()
    {
        try
        {
              funzione2();
              funzione3();
              funzione4();
         }
         catch(Exception ex)
         {
              //qui eventualmente gestisci in qualche modo l'eccezione
              //risolleva l'eccezione
              throw;
         }
    }
    .
    In alternativa puoi dichiarare usare il valore di ritorno di Principale1 come un flag che indichi se si è verificato un errore:
    codice:
    public static void Main()
    {
         // Ometto la dichiarazione del FileStream per la scrittura del file di log
         if(Principale1())
              Principale2();
    }
    
    public static bool Principale1()
    {
        try
        {
              funzione2();
              funzione3();
              funzione4();
         }
         catch(Exception ex)
         {
              //qui eventualmente gestisci in qualche modo l'eccezione
              return false;
         }
         return true;
    }
    .
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.