Author Topic: Non ho capito a cosa serve "throw" in Visual C#: X GILEAN!!! LEZIONE 6 di VC#!!!  (Read 5600 times)

0 Members and 1 Guest are viewing this topic.

Offline marchionili

  • Novizio del forum
  • *
  • Posts: 38
  • Karma: 0
  • Novizio
Code: [Select]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace NomeDelMese
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public static string NomeMese(int Mese)
        {
            switch(Mese)
            {
                case 1:
                    return "Gennaio";
                    break;
                case 2:
                    return "Febbraio";
                    break;
                case 3:
                    return "Marzo";
                    break;
                case 4:
                    return "Aprile";
                    break;
                case 5:
                    return "Maggio";
                    break;
                case 6:
                    return "Giugno";
                    break;
                case 7:
                    return "Luglio";
                    break;
                case 8:
                    return "Agosto";
                    break;
                case 9:
                    return "Settembre";
                    break;
                case 10:
                    return "Ottobre";
                    break;
                case 11:
                    return "Novembre";
                    break;
                case 12:
                    return "Dicembre";
                    break;
                default:
                    throw new ArgumentOutOfRangeException("Mese non corretto");
                    break;
            }


        }

        private void button1_Click(object sender, EventArgs e)
        {
            int NumeroMese = Int32.Parse(textBox1.Text);
            textBox2.Text = NomeMese(NumeroMese);

        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}

Nella lezione 6 trovo la riga di codice con il throw che mi manda in tilt il programma e non mi permette di capire con esattezza l'utilizzo di questa parolina.
Inoltre accanto a break VSC# mi scrive "rilevato codice non eseguibile"...

 :byebye:
« Last Edit: 29 November , 2011, 22:11:09 PM by marchionili »

Offline afazio

  • Veterano del forum
  • ****
  • Posts: 663
  • Karma: 273
  • dovizio mi delizio
    • CI si vede al Bar
Re: Non ho capito a cosa serve "throw" in Visual C#
« Reply #1 on: 29 November , 2011, 10:43:51 AM »
Code: [Select]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace NomeDelMese
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public static string NomeMese(int Mese)
        {
            switch(Mese)
            {
                case 1:
                    return "Gennaio";
                    break;
                case 2:
                    return "Febbraio";
                    break;
                case 3:
                    return "Marzo";
                    break;
                case 4:
                    return "Aprile";
                    break;
                case 5:
                    return "Maggio";
                    break;
                case 6:
                    return "Giugno";
                    break;
                case 7:
                    return "Luglio";
                    break;
                case 8:
                    return "Agosto";
                    break;
                case 9:
                    return "Settembre";
                    break;
                case 10:
                    return "Ottobre";
                    break;
                case 11:
                    return "Novembre";
                    break;
                case 12:
                    return "Dicembre";
                    break;
                default:
                    throw new ArgumentOutOfRangeException("Mese non corretto");
                    break;
            }


        }

        private void button1_Click(object sender, EventArgs e)
        {
            int NumeroMese = Int32.Parse(textBox1.Text);
            textBox2.Text = NomeMese(NumeroMese);

        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}

Nella lezione 6 trovo la riga di codice con il throw che mi manda in tilt il programma e non mi permette di capire con esattezza l'utilizzo di questa parolina.
Inoltre accanto a break VSC# mi scrive "rilevato codice non eseguibile"...

 :byebye:

non conosco il linguaggio tuttavia mi sembra di capire che dovresti mettere l'istruzione relativa al Case Else (cioè il caso in cui non si verifica nessuno dei casi elencati) proprio laddove trovi quella "strana" istruzione"
« Ogni qualvolta una teoria ti sembra essere l’unica possibile, prendilo come un segno che non hai capito né la teoria né il problema che si intendeva risolvere. »
K.P.

zax2010

  • Guest
Re: Non ho capito a cosa serve "throw" in Visual C#
« Reply #2 on: 29 November , 2011, 11:20:05 AM »
In c il costrutto switch-case prevede la possibilità di un default (non obbligatorio) nel caso in cui nessuno dei casi previsti si verifica.

Per cui in c, avrei scritto:

Code: [Select]
switch(Mese)
            {
                case 1:  return "Gennaio"; break;
                case 2:  return "Febbraio"; break;
                case 3:  return "Marzo"; break;
                case 4:  return "Aprile"; break;
                case 5:  return "Maggio"; break;
                case 6:  return "Giugno"; break;
                case 7:  return "Luglio"; break;
                case 8:  return "Agosto"; break;
                case 9:  return "Settembre"; break;
                case 10: return "Ottobre"; break;
                case 11: return "Novembre"; break;
                case 12: return "Dicembre"; break;
                default: return "Mese non corretto"; break;
            }

Offline mg

  • Semi Esperto
  • **
  • Posts: 167
  • Karma: 24
  • Novizio
Re: Non ho capito a cosa serve "throw" in Visual C#
« Reply #3 on: 29 November , 2011, 16:39:22 PM »
Ciao, ti consiglio di acquistare un buon manuale. Io ho iniziato con "Visual C# 2010 - Passo per passo" di John Sharp. Nota il cognome dell'autore... è un predestinato!  :inchino:

Per risolvere velocemente il tuo quesito prova a leggere il §7.1 della guida "ABC# Guida alla programmazione" di Antonio Pelleriti scaricabile liberamente in rete.

ciao
MArco

Offline marchionili

  • Novizio del forum
  • *
  • Posts: 38
  • Karma: 0
  • Novizio
Re: Non ho capito a cosa serve "throw" in Visual C#
« Reply #4 on: 29 November , 2011, 22:03:57 PM »
Grazie Marco ma io volevo solo capire cosa voleva scrivere o far notare Gilean quando ha scritto quella riga di codice.

Ho scaricato il pdf che mi hai consigliato e devo ammettere che é davvero fantastico! Il manuale "Visual C# 2010 - Passo per passo" di John Sharp mi sembra utile più che altro per consultazione.

Comunque a breve siamo nel 2012 e penso che microsoft lancierà una nuova versione del prodotto.

Offline marchionili

  • Novizio del forum
  • *
  • Posts: 38
  • Karma: 0
  • Novizio
Re: Re: Non ho capito a cosa serve "throw" in Visual C#
« Reply #5 on: 29 November , 2011, 22:07:42 PM »
In c il costrutto switch-case prevede la possibilità di un default (non obbligatorio) nel caso in cui nessuno dei casi previsti si verifica.

Per cui in c, avrei scritto:

Code: [Select]
switch(Mese)
            {
                case 1:  return "Gennaio"; break;
                case 2:  return "Febbraio"; break;
                case 3:  return "Marzo"; break;
                case 4:  return "Aprile"; break;
                case 5:  return "Maggio"; break;
                case 6:  return "Giugno"; break;
                case 7:  return "Luglio"; break;
                case 8:  return "Agosto"; break;
                case 9:  return "Settembre"; break;
                case 10: return "Ottobre"; break;
                case 11: return "Novembre"; break;
                case 12: return "Dicembre"; break;
                default: return "Mese non corretto"; break;
            }

Il primo lavoro che farò sarà tradurre il tuo software su Visual C#. Comunque anche in C# bisognerebbe scrivere
Code: [Select]
default: return "Mese non corretto"; break; però non é questo il punto. Io vorrei capire perché Gilean ha scritto un'altra cosa e che cosa voleva dire al riguardo. Ho guardato il suo video ma non ho capito esattamente questo punto.

Offline mg

  • Semi Esperto
  • **
  • Posts: 167
  • Karma: 24
  • Novizio
Ciao, premetto che non sono certo un esperto di C#. Comunque provo a darti qualche altra informazione riferendomi a "Visual C# 2008" di john sharp.

"Throw" è un'istruzione relativa alla gestione di errori.
Se scrivi il codice all'interno di un blocco TRY, C# esegue ogni istruzione. Se si verifica una condizione di errore, l'esecuzione si interrompe e riprende in un altro blocco di codice progettato per rilevare l'eccezione e gestirla: il gestore CATCH.
Quando c'è l'eccezione l'esecuzione esamina i gestori catch per vedere se c'è corrispondenza tra l'eccezione che si è generata e quelle gestite da CATCH.
Le librerie di classi .net contengono molte classi di eccezione, la maggior parte delle volte queste descrivono la condizione che rapprensenta l'eccezione. In caso contrario , puoi creare tu la classe di eccezione. Puoi infine generare tu un'eccezione attraverso l'istruzione THROW.

Dai un occhio qui http://msdn.microsoft.com/it-it/library/system.argumentoutofrangeexception.aspx

La classe ArgumentOutOfRangeException è quella appropriata nel tuo caso. Tale classe è nello spazio dei nomi System, devi quindi avere l'istruzione USING.



Ciao
MArco

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24