Visualizzazione dei risultati da 1 a 5 su 5

Discussione: clausola throws

  1. #1
    Utente di HTML.it L'avatar di evil80
    Registrato dal
    May 2001
    Messaggi
    321

    clausola throws

    Ciao,
    non sò se qualcuno di voi ha mai scritto in Java.
    Bèh in Java c'è una clasuola throws che è possibile inserire nella dichiarazione di un metodo di una classe.
    Tale clausola dichiara che nel momento in cui si richiama quel metodo bisogna PER FORZA gestire le eccezioni che definisce.

    Per esempio :

    public class ciao
    {
    public ciao(){//Costruttore}

    public void saluta()throws Exception
    {
    System.out.println("Ciao dal metodo ciao.saluta()");
    }
    }

    Bene a questo punto sel nel codice client vado a richiamare ciao.saluta() sono costretto a racchiunderlo in un try...catch (e far catturare al catch l'eventuale Exception).

    Trova che questa sia una cosa molto utile ma non sono ancora riuscito ad implemterla in .Net
    Sviluppo in C# e mi piacerebbe usare quest'opzione,qualcuno di voi la mai usata in C#.Net ?

    Grazie e ciao.
    Secondo alcuni autorevoli testi di tecnica di aeronautica, il calabrone non può volare, a causa della forma e del peso del proprio corpo in rapporto alla superficie alare.
    Ma il calabrone non lo sa e perciò continua a volare.
    Igor Sikorsky

  2. #2

    Re: clausola throws

    Originariamente inviato da evil80
    Ciao,
    non sò se qualcuno di voi ha mai scritto in Java.
    Bèh in Java c'è una clasuola throws che è possibile inserire nella dichiarazione di un metodo di una classe.
    Tale clausola dichiara che nel momento in cui si richiama quel metodo bisogna PER FORZA gestire le eccezioni che definisce.

    Per esempio :

    public class ciao
    {
    public ciao(){//Costruttore}

    public void saluta()throws Exception
    {
    System.out.println("Ciao dal metodo ciao.saluta()");
    }
    }

    Bene a questo punto sel nel codice client vado a richiamare ciao.saluta() sono costretto a racchiunderlo in un try...catch (e far catturare al catch l'eventuale Exception).

    Trova che questa sia una cosa molto utile ma non sono ancora riuscito ad implemterla in .Net
    Sviluppo in C# e mi piacerebbe usare quest'opzione,qualcuno di voi la mai usata in C#.Net ?

    Grazie e ciao.
    la cosa la puoi fare ma è un po' più macchinosa...in pratica devi prima fare il catch dell'eccezione e poi "lanciarla di nuovo"

    void saluta()
    {
    try {
    Response.Write ("CIAO");
    }
    catch (Exception e)
    {
    throw e;
    }
    }

    in questa maniera l'eccezione viene rimandata "al mittente"
    ciao
    "I video giochi non influenzano i bambini. Voglio dire, se Pac-man avesse influenzato la nostra generazione, staremmo tutti saltando in sale scure, masticando pillole magiche e ascoltando musica elettronica ripetitiva!" (Kristian Wilson, Nintendo Inc., 1989)
    Pochi anni dopo naquero le feste rave, la musica techno e l'ecstasy...

    :quote:

  3. #3
    Utente di HTML.it L'avatar di evil80
    Registrato dal
    May 2001
    Messaggi
    321
    dovrebbe funzionare,ovvero in questo modo propago l'eccezione al prossimo livello.
    Ma è davvero un peccato che un linguaggio così ben fatto abbia trascurato questo dettaglio.
    Cmq C# è molto ma molto ma molto meglio di Java !
    Sono sicuro che prima o poi aggiungeranno anche questa clausola.

    Ciao.
    Secondo alcuni autorevoli testi di tecnica di aeronautica, il calabrone non può volare, a causa della forma e del peso del proprio corpo in rapporto alla superficie alare.
    Ma il calabrone non lo sa e perciò continua a volare.
    Igor Sikorsky

  4. #4
    Non ne sono sicuro ma mi è venuta in mente una cosa.
    Mi sa che quando genera un eccezione questa viene rimandata automaticamente alla funzione chiamata e così via.
    se poi nessuno fa il catch allora viene generato un errore di eccezione non gestita. Ovvero funziona allo stesso modo di java solo che non vengono descritte esplicitamente le eccezioni generate. Il costrutto che ti avevo dato io invece servirebbe per fare il catch di solo alcune eccezioni mentra le altre si rimandano alla struttura chiamante...
    ...non ne sono sicuro ma dovrebbe funzionare così
    "I video giochi non influenzano i bambini. Voglio dire, se Pac-man avesse influenzato la nostra generazione, staremmo tutti saltando in sale scure, masticando pillole magiche e ascoltando musica elettronica ripetitiva!" (Kristian Wilson, Nintendo Inc., 1989)
    Pochi anni dopo naquero le feste rave, la musica techno e l'ecstasy...

    :quote:

  5. #5
    Utente di HTML.it L'avatar di evil80
    Registrato dal
    May 2001
    Messaggi
    321
    certo che funziona così tutto si propaga in automatico fino al main().
    Questo però non toglie che mettere throws OBBLIGHI in fase di COMPILAZIONE e NON a run-time a catturare determinate eccezioni.
    Se non usi try...catch nella chiamata ad un metodo che espone la clausola throws allora non si compila!

    Ciauz.
    Secondo alcuni autorevoli testi di tecnica di aeronautica, il calabrone non può volare, a causa della forma e del peso del proprio corpo in rapporto alla superficie alare.
    Ma il calabrone non lo sa e perciò continua a volare.
    Igor Sikorsky

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.