Jul 05, 2020 01:49
вообще, идея if (что-то) throw exception она чисто процедурная и вообще вызывает дичайшее несопоставление, потому, что почему не return false. точка, тут все верно.
по-идее же вся история с эксепшнами она про то, что _твой_ код вообще должен быть чистым, а вот то, что там вызывается - может кидаться чем хошь.
и тут возникает вообще масса исторических деталей, основа которых умещается во фразу "вся вообще система управления ошибками в проуграммировании убогая до невозможности". но с чем живем... почему?
вообще исторически у нас тут (тм) есть два варьянта: ошибки в процедурном стиле аля return false и в эксепшновском аля ооп (хотя на мой взгляд тут ооп как шарик на елку натянут)
первые убогие по причине "а чо если мест где может чо возникнуть не два, не три, все разные и обработка сложная". return false (тм, чистый и незамутненный) тут даже в похопе виден в стареньких функциях, ибо то false, то null, то 0 и попробуй пойми чо и где. на этом именно факте полного г-а и построена система исключений, которая позволяет убрать массу говнокода, 0-null-false и вообще поприличнее на порядок управлять проблемками.
но сами исключения убоги потому, что идею обернули во что есть. в оуп. и канеш нагоризонталили в них, к примеру и не только - сообщениями, где любой неанглоязычник начинает рыдать над переводами строк. и это только начало! потому, что ex (сокращение дальше от exception) как объекты приходится _всегда_ создавать (в исключительной ситуации, к примеру, нехватки памяти, гыгы).
или возьмем историю catch (что-то одно) catch (нечто другое) catch (третье). вот расскажите мне
- там чо, обработчики будут разные? нет, скорее всего просто сообщения будут слегка другие
- как правило метод fail fast работает лучше, те обработку _ваще_ лучше не писать, а делать глобальный отлов и на ui отдавать "у нас тут бум", а разрабу - стек и полный фарш. всегда, что характерно.
- ситуаций когда фиговина не исключительная - тоже случается и там нужны не исключения по-хорошему, поэтому вся лапша (тм) в результате, и исключений и исключений-но-не-очень живет обычно вместе и рядом. то так, то сяк. чисто бытовым образом - потому, что _так удобнее_. и это - важно
потому, что удобства - они возникают в помойке, они возникают потому, что без них ну совсем кранты, потому, что именно из них должны расти языки, а не от того, что у кого-то там засверкалло функциональным или еще каким прастихосспади.
проуграммированья