A especificação de um sufixo Exception em classes de exceção parece um cheiro de código para mim (informações redundantes - o restante do nome implica um estado de erro e herda de Exception). No entanto, também parece que todo mundo faz isso e parece ser uma boa prática.
Estou procurando entender por que isso é uma boa prática.
Eu já vi e li a pergunta: por que as exceções geralmente têm a exceção do sufixo no nome da classe
A questão é para PHP e, embora as respostas sejam provavelmente válidas para Java. Existem outros argumentos ou é realmente tão simples quanto diferenciá-los explicitamente?
Se pegarmos os exemplos da pergunta anterior - poderia realmente haver classes em java com o nome FileNoFoundque não é uma exceção? Se houver, justifica o sufixo Exception?
Olhando para uma hierarquia rápida no eclipse de Exception, com certeza, a grande maioria deles tem o sufixo de exceção, mas existem algumas exceções. javassisté um exemplo de uma biblioteca que parece ter algumas exceções sem o sufixo - por exemplo BadByteCode, BadHttpRequestetc.
BouncyCastle é outra lib com exceções como CompileError
Eu pesquisei um pouco também com pouca informação sobre o assunto.
FileNotFound ArrayIndexOutOfBoundse OutOfMemorysão mais observações / descrições, mas são aplicadas ao substantivo Exception.
Exceptionsufixo ou devemos fazer exceções para exceções excepcionais?" ;)