Il suffisso Eccezione su eccezioni in java

17

Specificando un suffisso di Eccezione sulle classi di eccezioni mi sento come un odore di codice (Informazioni ridondanti - il resto del nome implica uno stato di errore ed eredita da Eccezione). Tuttavia, sembra anche che tutti lo facciano e sembra essere una buona pratica.

Sto cercando di capire perché questa è una buona pratica.

Ho già visto e letto la domanda perché le eccezioni di solito hanno l'eccezione suffisso nel nome della classe

La domanda è per PHP e mentre le risposte sono probabilmente valide per Java. Ci sono altri argomenti o è tanto semplice quanto esplicitarli in modo esplicito?

Se prendiamo gli esempi della domanda precedente, potrebbero esistere classi in java con il nome FileNoFound che non è un'eccezione? Se ci potrebbe essere, è sufficiente suffragarlo con Exception ?

Guardando una rapida gerarchia in eclissi di Exception , abbastanza sicuro, la maggior parte di loro ha il suffisso di eccezione, ma ci sono alcune eccezioni. javassist è un esempio di una libreria che sembra avere poche eccezioni senza il suffisso - ad es. BadByteCode , BadHttpRequest ecc.

BouncyCastle è un'altra lib con eccezioni come CompileError

Ho cercato su Google un po 'anche con poche informazioni sull'argomento.

    
posta drone.ah 21.02.2013 - 22:05
fonte

3 risposte

25

La risposta di Landei è buona, ma c'è anche la risposta grammaticale. I nomi delle classi dovrebbero essere nomi . Cos'è un "OutOfMemory"? Che cos'è un "FileNotFound"? Se si pensa a "Eccezione" come sostantivo, il descrittore è l'aggettivo che lo specifica. Non è solo qualsiasi Exception , è un FileNotFoundException . Non dovresti aver bisogno di prendere un OutOfMemory più di quanto non saresti andato al negozio per comprare un "blu".

Questo si presenta anche se leggi il tuo codice come una frase: " Try facendo ... e catch OutOfMemory Exceptions "

    
risposta data 21.02.2013 - 22:51
fonte
6

Penso che le eccezioni (e gli errori, e teoricamente l'altro Throwable s) siano diversi da cose come interfacce o enumerazioni (che di solito non sono usate come suffisso): di solito hanno uno scopo molto chiaro e limitato, sono usate con costrutti linguistici specializzati ( try , catch , throw , throws ) e seguono regole speciali (es. eccezioni controllate e non controllate, no generici). In un certo senso non sono solo le classi che vengono usate come eccezioni, ma un meccanismo di eccezione che viene implementato attraverso le classi.

Quindi, se si ha a che fare con un'eccezione e non la si riconosce come tale, di solito qualcosa è profondamente sbagliato (che non è il caso di cose come enumerazioni o interfacce). Quindi penso che queste differenze rispetto alle classi "normali" siano abbastanza grandi da richiedere un indizio visivo.

    
risposta data 21.02.2013 - 22:24
fonte
0

However, it also seems that everyone does it and it seems to be good practice.

Sì, lo fanno tutti, quindi è una pratica, ma è ancora buono? Diverse persone stanno mettendo in dubbio che:

  • link (Il suffisso Exception § context: php)
  • il video collegato, link (salta a 53:00, contesto: php), ispira l'articolo e sottolinea che ogni volta che usi un'eccezione, hai una parola chiave che mostra già un'eccezione vicina
  • link mostra come l'affermazione nella risposta di @Bobson potrebbe non essere assoluta, e il punto che a volte il suffisso è buono, per le eccezioni a livello di applicazione o di infrastruttura, ea volte dovresti cercare di salvare i caratteri presi da questo lungo suffisso per esprimere qualcosa di più preciso e significativo. Questo punto ha senso solo se si utilizza una lingua in cui la cultura deve utilizzare le eccezioni per le violazioni delle regole aziendali.
  • il SO link fornisci punti sui conflitti dei nomi, ma ora abbiamo gli spazi dei nomi, vero?
risposta data 19.07.2016 - 20:11
fonte

Leggi altre domande sui tag