Попробуй поймай в основном или в методе - PullRequest
0 голосов
/ 13 ноября 2018

Итак, я поставил задачу получить время для часов.Используя метод 3 gethour, getmin, getsec внутри метода, мы должны проверить, находится ли значение между 0 и 60, если оно не выбрасывает исключение.Мой вопрос: лучше ли попытаться поймать внутри моего основного или я должен сделать это внутри метода?

Я сделал это в методе, потому что я чувствовал, что это было лучше (только моя мысль), и мой проф вычлиоценки от этого, заявляющего, что лучше сделать это в основномТак что я просто хочу знать, что на самом деле лучше и почему.

Ответы [ 5 ]

0 голосов
/ 13 ноября 2018

На самом деле не имеет значения, куда поместить блок try-catch.Если вы не хотите перехватывать исключение внутри вашего метода и возвращать метод вызывающего, то есть main (), то вы можете обработать его там.Это чисто зависит от требований.Я не уверен, почему ваш профессор сделал это.Вы можете спросить его.

0 голосов
/ 13 ноября 2018

Хорошей практикой является обработка исключений только тогда, когда вы можете предпринять какие-либо значимые действия с ними.У меня нет вашего полного примера, но я предполагаю, что если вы поймаете исключение внутри метода, вам нужно будет вернуть какое-то значение вызывающей стороне.И тогда как вызывающий узнает, что в вашем методе есть недопустимые данные (за пределами диапазона 0 ... 60)?С другой стороны, если вы выбросите исключение и обработаете его в main (), у вас будет больше возможностей сделать это, и метод не будет скрывать ситуацию ошибки.Это также называется разделением интересов.Функциональные возможности метода и обработка ошибок являются отдельными проблемами, и их не следует смешивать.Если вы обработаете исключение в main (), у вас будет лучшая SoC: функциональность в методе, обработка ошибок в main ()

0 голосов
/ 13 ноября 2018

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

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

Это действительно все, что нужно сделать.Всякий раз, когда вы пишете оператор catch, вы должны задавать себе вопрос: «Могу ли я что-нибудь сделать, чтобы исправить это на данном этапе в коде?»

Например, если вы ожидаете найти файл конфигурации, и он отсутствуеттогда, возможно, подходящим действием будет возврат к некоторым разумным значениям конфигурации по умолчанию.

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

0 голосов
/ 13 ноября 2018

Практика обработки исключений заключается в том, что вы должны отлавливать шкафы исключений в местах их возникновения. Это облегчает отслеживание, а также улучшает управление потоком. Try-catch в основном используется для предотвращения сбоя вашей программы при очень необычных обстоятельствах, при этом для пользователя отображается удобное сообщение об ошибке и регистрируется полная ошибка где-то еще.

Однако, если вы уже обрабатываете исключения правильно, специфичным для задачи способом, то более общий метод try-catch можно использовать в качестве отказоустойчивого для ошибок в крайних случаях, которые не были обнаружены во время тестирования, или для очень редких случаев.

0 голосов
/ 13 ноября 2018

Если ваш метод должен генерировать исключение по определению, то ему не нужно перехватывать какое-либо исключение, поскольку его следует определить как выбрасывающее исключение и фактически выбрасывающее исключение

...