KseNya![]() | Предусмотреть обработку исключений и реализовать собственные1680043482 Есть задание: предусмотреть обработку исключений, возникающих при нехватке памяти, отсутствии требуемой записи (обьекта) в файле, недопустимом значении поля и т. д. Реализуйте собственные обработчики исключений и исключения ввода/вывода.
Я не понимаю как реализовать эти исключения(нехватка памяти, отсутствии записи в файле (мне кажется это не требуется, т.к. здесь я не работала с файлами) и недопустимое значение). А так же я даже не знаю какие здесь можно добавить свои обработчики исключений. Я думала на счёт того чтобы, например, в методе Search нельзя было вводить отрицательные числа, но у меня как-то не получается это сделать.
Вот часть моей программы, для которой,как мне кажется, можно было бы сделать исключения, т.к. в остальной части нет ничего значимого для чего можно сделать исключения:
Если бы вы могли мне помочь, была бы очень благодарна. |
IOException![]() | 1680047978 для начала несколько маленьких замечаний
KseNya
конечно вы можете обозначать метод с большой буквы, однако в яве так не принято, считается плохим стилем.
Хотя бы потому что легко спутать с классами, которые принято писать с большой буквы. Все методы а так же переменные следует писать начиная с маленькой буквы и в формате "camel case", напр. doSomething().
Я бы посоветовал ознакомиться с т.н. Java Code Conventions и с самого начала привыкать к общепринятому профессиональному стилю.
https://www.oracle.com/technetwork/java/codeconventions-150003.pdf
Если вы пишете код как попало, не придерживаясь конвенций это сразу кидается в глаза и выглядит не профессионально. С таким стилем вы вряд ли произведете положительное впечатление на потенциального работодателя. За то если вы заведете привычку писать код в общепринятом стиле то и доценты которые будут его читать совершенно по другому будут к вам относится.
далее.
Вы создаете новый объект сканнера прямо в вашем классе
вот это я бы вам не советовал делать. Либо поместите этот объект в метод где вы им пользуетесь, либо сделайте его static, либо наилучшим вариантом будет вообще использовать только один static сканер везде где потребуется.
сделайте отдельный класс
и потом можете из метода любого другого класса пользоваться им так.
KseNya,
«предусмотреть обработку исключений»
ну для начала
«Реализуйте собственные обработчики исключений и исключения ввода/вывода.»
откровенно говоря я не совсем понимаю что тут подразумевается под исключением ввода/вывода.
Однако может это поможет понять как делаются собственные исключения в принципе.
Существует два типа исключений. Просто исключение (Exception) и т.н. исключение во время выполнения (RuntimeException)
Разница лишь в том что обычные требуют чтобы методы которые их кидали обязательно были обработаны и находились в try catch блоке. То есть если у вас метод кидает обычное исключение уже на уровне редактирования кода IntelliJ вам укажет что следует обрабатывать исключение и какое именно. Вы не сможете компилировать код не поместив метод которое кидает обычное исключение в try catch. Таким например является IOException.
RuntimeException однако не требует такой проверке. Оно может возникнуть при выполнении. Таким например является NullPointerException.
Далее пример простого собственного RuntimeException
обратите внимание, в методе main мы его всё же пытаемся пой поместив метод который его может кинуть в try catch блок. Однако т.к. это RuntimeException её не обязательно обрабатывать. Если вы не поместите вызов метода readPositivNumber в try catch компайлер вас не предупредит что такое исключение может произойти. Если же оно произойдет то программа просто остановиться и выдаст вам исключение и весь стэктрейс на экран. Но мы же хотим не просто выдать стектрейс и позволить программе просто вылететь, а мы хотим может напечатать только текст ошибки и выйти из программы в контролированном порядке. По этому ловим и обрабатываем.![]() ![]() |
KseNya![]() | 1680048089влепить жирный лайк![]() |