Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [java]Errori su classi del package java.awt.event

    Salve a tutti,
    compilando un file java, mi rileva questo tipo di errore:

    C:\Documents and Settings\Xp\Documenti\Toshiba\RFID simulator\src\it\poliba\telematics\rfid\presentati on\Frame_compare_algorithms_QTperParti.java:48: actionPerformed(java.awt.event.ActionEvent) in it.poliba.telematics.rfid.presentation.Frame_compa re_algorithms_QTperParti.ActionStart cannot implement actionPerformed(java.awt.event.ActionEvent) in java.awt.event.ActionListener; overridden method does not throw java.security.NoSuchAlgorithmException


    Le righe "incriminate" sono queste:

    private class ActionStart implements ActionListener {
    public void actionPerformed(ActionEvent event) throws NoSuchAlgorithmException {


    Il corpo del metodo contiene chiamate ad altri metodi che lanciano eccezioni di tipo NoSuchAlgorithmException e che sono definiti in un altro file.

    Spero possiate aiutarmi

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [java]Errori su classi del package java.awt.event

    Originariamente inviato da J_of_arc
    java.awt.event.ActionListener; overridden method does not throw java.security.NoSuchAlgorithmException


    Le righe "incriminate" sono queste:

    private class ActionStart implements ActionListener {
    public void actionPerformed(ActionEvent event) throws NoSuchAlgorithmException {
    La questione è molto semplice e riguarda il concetto di override.
    Nella tua classe devi implementare i metodi dichiarati nella interfaccia ActionListener. Vuol dire che devi seguire le regole per effettuare un corretto override di quei metodi.

    Una delle (tante) regole dell'override dice che il metodo non può dichiarare nuove eccezioni o eccezioni più "ampie" mentre può dichiarare meno eccezioni o eccezioni più "ristrette" rispetto al metodo di cui si fa l'override. Questo vale per le eccezioni "checked" (come appunto NoSuchAlgorithmException), perché per quelle "unchecked" la regola non vale e puoi dichiararne tutte quelle che vuoi.

    Nel tuo caso actionPerformed nella interfaccia ActionListener non dichiara alcuna eccezione checked, quindi tu non puoi dichiarare eccezioni checked nella tua implementazione di actionPerformed.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Ho capito...ma come faccio a sapere quali sono le eccezioni "throwable" dalle classi dell'interfaccia ActionListener e quindi quali sono quelle checked o unchecked?

    Il corpo del metodo actionPerformed contiene chiamate a funzioni che lanciano eccezioni di tipo NoSuchAlgorithmException, quindi non vorrei che actionPerformed debba necessariamente lanciare eccezioni di questo tipo.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da J_of_arc
    Ho capito...ma come faccio a sapere quali sono le eccezioni "throwable" dalle classi dell'interfaccia ActionListener e quindi quali sono quelle checked o unchecked?

    Il corpo del metodo actionPerformed contiene chiamate a funzioni che lanciano eccezioni di tipo NoSuchAlgorithmException, quindi non vorrei che actionPerformed debba necessariamente lanciare eccezioni di questo tipo.
    Volendo dirlo in altri termini, dal metodo actionPerformed() tecnicamente è possibile lanciare solo eccezioni unchecked. Tuttavia devi tenere presente una cosa importante e cioè che il metodo actionPerformed non viene chiamato da del "tuo" codice ma da codice del framework nel contesto del event-dispatch-thread.

    Se anche lanciassi eccezioni unchecked ... non saprei dove vanno a finire. Per quello che so, il framework in quel contesto si limita a stampare su standard out (o err, dovrei verificare) le informazioni sulla eccezione e quindi continuare con quello che deve fare.

    Per riassumere: all'interno di un metodo di un listener è bene non lanciare al di fuori eccezioni (salvo diversamente specificato) ma semmai gestirle (catturandole) in modo appropriato.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Ciao,
    ho fatto in questo modo:
    private class ActionStart implements ActionListener {
    public void actionPerformed(ActionEvent event) {
    try {
    //corpo del metodo
    }
    catch (NoSuchAlgorithmException e) { e.printStackTrace();}
    }
    }

    La compilazione non mi dà errori.
    Può andar bene così?
    Grazie dell'attenzione

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da J_of_arc
    Può andar bene così?
    Sì, se ti va bene mandare in output lo stack trace.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.