Еще один взгляд на проблему:
Другие ответы в основном утверждают, в основном, «когда вы переключаете / регистр на X, а тип X позволяет X быть 1, 2, 3 и т. Д. (Целое число), или красным, синим, Fucsia и т. Д. (Перечисление) , обязательно обработайте и т. Д. !! ". Очевидно, не так ли?
С другой стороны, когда вы полагаете, что X как переменная из-за выполнения программы никогда не примет значения "и т. Д." ... подумайте иначе, потому что в конечном итоге это произойдет. Это общий совет.
Отклонение от Java / Pascal, чтобы представить это в перспективе: что, если тип X не допускает "etc"? (скажем, «очень строгое» перечисление или диапазон (для целых чисел)). То есть компилятор гарантирует, что возможные значения никогда не будут "и т.д.". И это отмечает необработанные случаи как ошибки. Было бы здорово. :-) Функциональные языки имеют сопоставление с образцом и алгебраические типы, что-то вроде этого, но у меня нет соответствующего опыта там. (
Возвращаясь к Java (и подобным языкам), поскольку вы можете реализовывать типы (классы), вы можете осуществлять строгую проверку, например, делая "case" как вызов метода, принимая объекты lambdas / functions / function ...