Stai continuando a lanciare la UnsupportedEncodingException![]()
Stai continuando a lanciare la UnsupportedEncodingException![]()
SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
Di questo libro e degli altri (blog personale di recensioni libri) | NO M.P. TECNICI
Mi spiace ma Eclipse non me la lascia togliere! Se la rimuovo non mi fa compilare...
Più pratica in futuro...
codice:public static String OttieniMD5(String input) throws NoSuchAlgorithmException { .... byte[] messageDigest; .... try { messageDigest = md.digest(input.getBytes("UTF-8")); } catch (UnsupportedEncodingException e) { throw new Error("Grave errore, UTF-8 non riconosciuto!"); } ..... }
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
Di questo libro e degli altri (blog personale di recensioni libri) | NO M.P. TECNICI
Però se voglio usare JOptionPane dato che sto lavorando su una GUI grafica cosa devo scrivere al posto di Error()?
Questo non funziona...
JOptionPane.showMessageDialog(null, errore,
titolo_errore, JOptionPane.ERROR_MESSAGE);
scusate sono proprio uno zuccone...![]()
Più pratica in futuro...
SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
Di questo libro e degli altri (blog personale di recensioni libri) | NO M.P. TECNICI
Eclipse non mi compila il programma. Io sto realizzando dei software con interfaccia grafica pertanto l'errore deve essere sempre visualizzato a mezzo di un JOptionPane che solitamente metto dentro il catch fatto seguire da un return che mi blocca tutto.
Più pratica in futuro...
Non compila... ok... il messaggio del compilatore?
SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
Di questo libro e degli altri (blog personale di recensioni libri) | NO M.P. TECNICI
Cioè nel metodo OttieniMD5 invece di avere:
throw new Error("Grave errore, UTF-8 non riconosciuto!");
vorresti mettere un qualche tipo di dialog che dia un avvertimento all'utente?
La risposta semplice che dò subito è: non dovresti.
Questo metodo OttieniMD5 è molto di "basso livello", fa un lavoro principalmente computazionale che di per sé non ha niente a che fare con qualunque tipo di interazione con l'utente. Quindi in OttieniMD5 non dovresti fare nulla di diretto verso l'utente. Se avessi una libreria di logging, puoi fare un log di errore, se non ne usi una al limite puoi fare un classico System.err.println ma in ogni caso dovresti lanciare fuori o una eccezione unchecked o un Error (gli Error sono "tecnicamente" unchecked ma hanno un altro significato più "grave").
Un metodo come OttieniMD5 sarebbe appropriato metterlo in una classe apposita di "utilità". Ma anche se lo metti dentro una classe che si occupa della interfaccia utente, è comunque buona cosa che OttieniMD5 non faccia nulla direttamente verso l'utente.
Dove invochi OttieniMD5, se lì c'è maggior "coscienza" della interfaccia utente, allora potresti visualizzare una dialog di errore.
Cerca di capire e di tenere presente che spesso il problema non è tanto tecnico ma concettuale. Certe cose non vanno fatte non perchè non sono tecnicamente possibili ma perché ... non dovrebbero essere fatte in quel modo o in quel luogo.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
1) Se non si può fare non lo faccio però ti spiego il mio ragionamento e poi mi dici cosa ne pensi. Quando calcolo il codice hash di "gianni" con il metodo OttieniMD5("gianni") se qualcosa andasse storto mi aspetto che l'eccezione venga intercettata e informi l'utente del problema e che il programma si blocchi ovvero non vada oltre altrimenti l'utente non sa perché sulla GUI il codice non viene scritto.
2) Detto questo vorrei sapere in quali casi si ricade nella UnsupportedEncodingException.
3) Ho corretto il codice che ora funziona. In pratica titolo_err_md5 doveva essere statica.
codice:public static String OttieniMD5Minuscolo(String input) throws NoSuchAlgorithmException { MessageDigest md = MessageDigest.getInstance("MD5"); byte[] messageDigest = null; try { messageDigest = md.digest(input.getBytes("UTF-8")); } catch (UnsupportedEncodingException e) { JOptionPane.showMessageDialog(null, titolo_err_md5, corpo_err_md5, JOptionPane.ERROR_MESSAGE); } StringBuilder buf = new StringBuilder(messageDigest.length * 2); for (byte b : messageDigest) { buf.append(String.format("%02x", b)); } return buf.toString(); }
Più pratica in futuro...