Зачем создавать исключение RuntimeException, если моя программа могла нормально работать, просто пропустив ее? - PullRequest
0 голосов
/ 28 августа 2018

Я работал над приложением анализатора логов databricks с помощью spark и scala. В объекте ApacheAccessLog они генерируют исключение RuntimeException, если строка журнала не соответствует заданному шаблону.

log match {
  case PATTERN(ipAddress, clientIdentd, userId, dateTime, method, endpoint, protocol, responseCode, contentSize)
  => ApacheAccessLog(ipAddress, clientIdentd, userId, dateTime, method, endpoint, protocol, responseCode.toInt,
    contentSize.toLong)
  case _ => throw new RuntimeException(s"""Cannot parse log line: $log""")
}

Мне бы хотелось, чтобы кто-то объяснил мне, почему я выбрасываю RuntimeException и нарушаю свою программу только потому, что одна строка журнала не соответствует моему шаблону? Не лучше ли просто пропустить эту строку, чтобы программа продолжала обрабатывать только те строки, которые соответствуют шаблону?

Также я буду рад, если вы предложите лучшую идею в качестве обходного пути.

1 Ответ

0 голосов
/ 28 августа 2018

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...