Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [Java] Eccezioni

  1. #1

    [Java] Eccezioni

    per generare un eccezione in un metodo, lo devo dichiarare con throws
    codice:
    public void myMethod() throws Exception{
    }
    Creo una classe ed eredito la classe con il metodo ke genera l'eccezione, faccio l'override del metodo e voglio ke generi un'altro tipo di eccezione...ma anche dichiarandola mi da errore xkè dice ke la classe base non contiente tale dichiarazione...

    ora mi chiedo è possibile ke un metodo di una classe pretenda di sapere i tipi di eccezioni ke gli eredi debbano lanciare?

    spero di no...e ke ci sia una soluzione...(xkè la classe base non deve dichiarare tutte le possibili eccezioni)

    il problema si complica con un interfaccia...
    codice:
    interface Interface{
       void method() throws ArgumentNullException;
    }
    
    class A implements Interface{
       public void method() throws ArgumentNullException;
    }
    
    class B extends A{
       public void method() throws ArgumentNullException, <un'altro tipo>;
    }
    come faccio ciò?

    p.s. se in java non è possibile farlo...confermo ke java fa veramente pena come linguaggio...
    by giuSp [.NetDeveloper]

    ___________
    un po' di VB non fa male!....?
    C# more power to you!!

  2. #2
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Non è che non si può fare; la classe "figlia" non può avere delle eccezioni superiori a quelle della classe madre; per esempio puoi fare:

    Codice PHP:
    class {
      public 
    A() {
      }

      public 
    void leggi() throws IOException{


      }
    }

    class 
    extends {
      public 
    B() {
      }

      public 
    void leggi() throws FileNotFoundExceptionIOException{

      }

    Infatti FileNotFoundException è una sottoclasse di IOException; ma non puoi fare:

    Codice PHP:
    class {
      public 
    A() {
      }
      
      public 
    void leggi() throws FileNotFoundException{
        
        
      }
    }

    class 
    extends {
      public 
    B() {
      }

      public 
    void leggi() throws FileNotFoundExceptionIOException{

      }

    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  3. #3

    Re: [Java] Eccezioni

    Originariamente inviato da giuSp
    se in java non è possibile farlo...confermo ke java fa veramente pena come linguaggio...
    supposizione confermata!! ( C# I love U)
    by giuSp [.NetDeveloper]

    ___________
    un po' di VB non fa male!....?
    C# more power to you!!

  4. #4
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352

    Re: [Java] Eccezioni

    Originariamente inviato da giuSp
    p.s. se in java non è possibile farlo...confermo ke java fa veramente pena come linguaggio...
    Ah si? E allora perchè gli (astuti) programmatori della microsoft avrebbero modellato C# a immagine e somiglianza di java?

    La logica seguita da java è assolutamente coerente con la filosofia della programmazione ad oggetti e con il significato delle interfacce. Facendo riferimento al tuo codice sopra, se dichiari un riferimento di tipo Interface, tutto ciò che sai è che quell'oggetto è conforme a quell'interfaccia, per tanto tutto ciò che sai è che il metodo 'metodo' lancia l'eccezione dichiarata nell'interfaccia, per questo java ti impedisce di dichiarare il lancio di altre eccezioni. Ok, c# o altri linguaggi potrebbero permetterti di fare ciò, ma devi essere cosciente tu poi di ciò che sta succedendo. Java si distingue anche per il fatto che il codice compilato da java è molto meno soggetto a bug rispetto ad altri linguaggi, cosi java ti impedisce di usare variabili non inizializzate, non compila codice in cui non vengano raccolte le eccezioni sollevate, e fa tutta una serie di controlli per evitare errori a runtime. Se hai bisogno di altre eccezioni puoi provare a strutturare diversamente il tuo codice,


  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Aggiungo che i compilati di C# occupano circa 10 volte di più dei compilati di Java... inoltre, C# porta il programmatore ad una metodologia di programmazione, come io amo chiamare, Object Disoriented... l'utilizzo delle famigerate properties ne è un esempio lampante e molti sono gli esempi, anche in questo forum, di utenti che non riescono a entrare nella metodologia Object Oriented a causa della incoerente filosofia Microsoft.


    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

  6. #6
    1) non voglio ora fare il figo, facendo una lista infinita delle cose ke ha c# in + rispetto a java...ve ne cito solo 3...

    > Velocità (un programma c# è infinitamente + veloce rispetto ad un java)
    > Potenza (in c# poi fare praticamente tutto, qualsiasi cosa permetta di fare il SO, in java...molte cose non si possono fare...1 per tutte e l'accesso alle API di sistema...)
    > EXE, programmi compilati in EXE,DLL...non quelli assurdi class...

    e poi tutti i futuri SO saranno molto .NET, parti saranno scritte completamente utilizzando C#,...conseguenza maggiori prestazioni e potenzialità...uno per tutti Longhorn...

    Originariamente inviato da LeleFT
    ...inoltre, C# porta il programmatore ad una metodologia di programmazione, come io amo chiamare, Object Disoriented... l'utilizzo delle famigerate properties...
    we se non conosci c#...non parlare...
    tu preferisci avere una classe con 20 getter e setter, invece di 10 proprietà(che riassumono 2 metodi in uno stesso nome)?
    e poi non vuol dire niente linguaggio disoriented...se sapessi come viene tradotta una proprietà, sapresti ke viene compilata mediante 2 metodi ovverrò get_ e set_....proprio come OOP vuole, mantenendo però l'incapsulamento...

    io conosco entrambi i linguaggi, ma una volta provato c#, basta, ho capito ke non ce ne per nessun'altro... :sgrat:
    by giuSp [.NetDeveloper]

    ___________
    un po' di VB non fa male!....?
    C# more power to you!!

  7. #7
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Originariamente inviato da giuSp
    1) non voglio ora fare il figo, facendo una lista infinita delle cose ke ha c# in + rispetto a java...ve ne cito solo 3...

    > Velocità (un programma c# è infinitamente + veloce rispetto ad un java)
    > Potenza (in c# poi fare praticamente tutto, qualsiasi cosa permetta di fare il SO, in java...molte cose non si possono fare...1 per tutte e l'accesso alle API di sistema...)
    > EXE, programmi compilati in EXE,DLL...non quelli assurdi class...

    e poi tutti i futuri SO saranno molto .NET, parti saranno scritte completamente utilizzando C#,...conseguenza maggiori prestazioni e potenzialità...uno per tutti Longhorn...


    we se non conosci c#...non parlare...
    tu preferisci avere una classe con 20 getter e setter, invece di 10 proprietà(che riassumono 2 metodi in uno stesso nome)?
    e poi non vuol dire niente linguaggio disoriented...se sapessi come viene tradotta una proprietà, sapresti ke viene compilata mediante 2 metodi ovverrò get_ e set_....proprio come OOP vuole, mantenendo però l'incapsulamento...

    io conosco entrambi i linguaggi, ma una volta provato c#, basta, ho capito ke non ce ne per nessun'altro... :sgrat:
    Ecco ora ti sei sfogato per benino?

    Ogni linguaggio ha le sue caratteristiche e i suoi scopi, con nessuno ci "fai di tutto", anche con java se vuoi puoi chiamare le api di windows, salvo perdere la portabilità, che in genere è uno degli obiettivi che cerca chi usa java, che ha evidentemente anche altri usi, come ad esempio la programmazione per cellualari. Personalmente ho dato uno sguardo al c# e all'ambiente .Net e l'impressione che ne ho avuta è positiva, non per niente, ripeto, c# è stato progettato avendo in mente java, da cui ha preso molte delle caratteristiche positive, lasciando da parte invece quelle negative del c++.

    :sgrat:


  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da giuSp
    we se non conosci c#...non parlare...
    tu preferisci avere una classe con 20 getter e setter, invece di 10 proprietà(che riassumono 2 metodi in uno stesso nome)?
    Conosco C#? Abbastanza...
    Preferisco 20 getter e setter? Decisamente Sì. Almeno non perdo in coerenza

    e poi non vuol dire niente linguaggio disoriented...se sapessi come viene tradotta una proprietà, sapresti ke viene compilata mediante 2 metodi ovverrò get_ e set_....proprio come OOP vuole, mantenendo però l'incapsulamento...
    So benissimo come viene tradotta... ma sai come viene tradotto nel cervello di chi le usa? Fatti un giretto nel forum...

    io conosco entrambi i linguaggi, ma una volta provato c#, basta, ho capito ke non ce ne per nessun'altro... :sgrat:
    Questione di gusti.

    La velocità è ovvia: il "compilato" di C# è ottimizzato per Windows, Java no (portabilità!!)... anche J++ è più veloce di Java, ma prova a chiedere a qualcuno che nel forum lo ha affrontato, per vedere i problemi che ha avuto con la compatibilità con il linguaggio di Sun.
    In ultimo devo dire che gli exe e le dll di C# valgono esattamente come i class di Java: entrambi sono interpretati da una VM sottostante: JVM per Sun e .NET Framework per Microsoft.

    Comunque non starò qui a rispondere alle parole di un fanatico, trasformando il thread in un flame (anche se penso che l'autore volesse creare proprio questo).

    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

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.