В компании, где я сейчас нахожусь, в коде есть много мест, где создается исключение OurCompanyRuntimeException (где OurCompany - это фактическое название компании). Насколько я могу судить, это исключение описывается как «Исключение во время выполнения, выданное кодом, который мы написали здесь, в этой компании».
Я немного новичок в Java, но я думал, что типы исключений должны были отражать , что пошло не так, а не , чей код вызвал исключение. Например, IllegalArgumentException означает, что кто-то передал недопустимый аргумент чему-либо. У вас не будет SunIllegalArgumentException, если в коде, написанном Sun, передан недопустимый аргумент, а затем IBMIllegalArgumentException - это будет глупо и бессмысленно, верно? И если вы хотите знать, где было сгенерировано исключение, вы посмотрите на трассировку стека. Я понимаю, что хочу расширить RuntimeException (чтобы у вас не было столько попыток / перехватов или «бросков»), но почему бы не создать подклассы, объясняющие, что произошло, а не код какой компании это произошло?
Кто-нибудь когда-либо использовал идею OurCompanyRuntimeException прежде, или есть идея, почему они могли бы сделать это таким образом?