2016-08-09 2 views
-2

Очевидно, что исключенные исключения не должны быть пойманы там, где я читал об этом. Однако, если вход необходим, каждый всегда поймал его в любом коде, который я видел.Не поймает InputMismatchException false?

Учитывая, что это неконтролируемое исключение, как бы вы справились с этим? Не могли бы вы предотвратить это в первую очередь? Почему никто не следит за практикой?

+1

Что вы хотите сказать? Является ли это * Почему люди ловили неконтролируемое исключение, когда вы читаете, вы не должны? * (Также, пожалуйста, ссылку на то, где вы читаете это, и вы можете обратиться к http://stackoverflow.com/a/13251421/1743880) , или это * Как вы обрабатываете недопустимый ввод * (и для этого обратитесь к http://stackoverflow.com/questions/3059333/validating-input-using-java-util-scanner)? Это два разных вопроса (и оба они были заданы раньше) – Tunaki

+0

Где вы это читали? Неконтролируемое исключение не всегда является результатом ошибки программиста. Это более тонкий и зависит от исключения. См. Http://stackoverflow.com/questions/13251368/should-unchecked-exceptions-be-caught-and-dealt-with – Tunaki

ответ

1

ясно сказано, что непроверенные исключения не должны быть пойманы

Это не правда, что вы никогда не должны поймать непроверенное исключение.

Если вы можете обработать исключение разумным способом, вы должны поймать. Например, вы можете поймать NumberFormatException (это исключено исключение) и отобразить окно сообщения, чтобы пользователь указал, что ввод неверен.

В другой руке вы не должны ловить Исключения, которые трудно или невозможно восстановить. В этом случае наилучшей стратегией является разрешение на выход приложения.

Вы также никогда не должны ломать ошибки (например, OutOfMemoryError), за исключением редких cases.

+0

Вы находитесь на точке;) – Enzokie

+1

'OutOfMemoryError' не является« Исключением », это 'Error'. Оба из них имеют общий суперкласс «Throwable». Вы никогда не должны ловить только «Throwable» или «Error» (или любой из его подклассов). –

Смежные вопросы