Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Gestione errore in C#

  1. #1
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026

    Gestione errore in C#

    Buon giorno a tutti.
    Sto costruendo una semplice applicazione dove bisogna dimensionare l'array scrivere il suo valore e stamparlo.
    E fin qui tutto bene solo che devo fare anche la gestione degli errori.
    codice:
    // Dimensiona, carica e stampa array  e gestisci errori da tastiera
    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace Prova2
    {
        class Program
        {
            static void Main(string[] args)
            {
               int dim;
                Console.WriteLine("Dare un valore per dimensionare l'array");
                    try
                    {
                        dim = Convert.ToInt32(Console.ReadLine());
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Attenzione utilizzare un numero");
                    }
                dim = Convert.ToInt32(Console.ReadLine());
    
                int[] arr = new int[dim];// dichiarazione di array con dimensionamento
    
                carica(arr);// subroutine carica
                Console.WriteLine("Questi sono i " + dim + " valori dell'array dimensionato");
                stampa(arr);// subroutine stampa
                Console.ReadLine();
    
            }// fine metodo Main
            static void carica(int[] n)// subroutine carica
            {
                for (int c = 0; c < n.Length; c++)
                {
                    Console.Write("Inserire valore per l'array " + c + " = ");
                    int v = Convert.ToInt32(Console.ReadLine());
                    n[c] = v;
                }// fine subroutine carica
            }
            static void stampa(int[] n) // subroutine stampa
            {
                for (int c = 0; c < n.Length; c++)
                {
                    Console.Write(n[c] + " ");
                }
            }//fine subroutine stampa
        }// fine classe
    }// fine namespace
    Il mio intento è quello di catturare una eccezione nell'inserimento all'inizio per dimensionare l'array.
    Cioè se viene premuto un carattere o un simbolo e dato invio viene catturata l'eccezione ma solo una volta, quindi all'inserimento successivo che non sia un numero il mio programma fallisce perchè non c'è più il try catch.
    Qualcuno può aiutarmi affinche all'inizio se continuo a sbagliare mi venga catturata l'eccezione.
    Grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    59
    Puoi semplicemente mettere un goto nel catch all'istruzione inserisci un numero

  3. #3
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    Originariamente inviato da ypkdani
    ...mettere un goto nel catch all'istruzione inserisci un numero
    I got the remedy

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da ypkdani
    Puoi semplicemente mettere un goto nel catch all'istruzione inserisci un numero
    Un

    goto
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Per ypkdani non capisco bene come mettere questo goto e per albgen invece non capisco perche piange e oregon è perplesso.
    Potete fare un esempio sul codice che ho postato.
    Grazie.

  6. #6
    codice:
    static void Main(string[] args)
            {
                int dim=-1;
                Console.WriteLine("Dare un valore per dimensionare l'array");
                while(dim<=0)
                {
                    try
                    {
                        dim = Convert.ToInt32(Console.ReadLine());
                    }
                    catch (Exception e)
                    {
                    }
                    if(dim<=0)
                        Console.WriteLine("Attenzione: inserire un numero positivo.")
                }
                int[] arr = new int[dim];// dichiarazione di array con dimensionamento
                carica(arr);// subroutine carica
                Console.WriteLine("Questi sono i " + dim + " valori dell'array dimensionato");
                stampa(arr);// subroutine stampa
                Console.ReadLine();
            }// fine metodo Main
    Per quanto riguarda i goto, dimenticateli: sono pratica di pessima programmazione.

    Comunque al posto di gestire l'eccezione puoi usare il metodo Int32.TryParse, che ti restituisce True se è possibile effettuare la conversione.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Grazie MItaly.
    Ora riesco a gestire l'errore.

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.