В чем разница между отклонением и исключением в akka-http - PullRequest
1 голос
/ 17 июня 2019

Я не вижу разницы между Отклонением и Исключением в akka-http, они мне кажутся излишними, поскольку ими управляют практически одинаково.

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

1 Ответ

1 голос
/ 17 июня 2019

Разница между Отклонением и Исключением является семантическая.

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

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

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

  • У вас есть исключение при сопоставлении директивы, это, вероятно, означает, что вы не можете выполнить правильную проверку, и единственный способ - вызвать функцию и искать исключение. Если выдается исключение, это означает, что директива не совпадает, и вы создаете отклонение.

  • Вы создаете отклонение как часть обработки исключений. Это один из способов обработки исключений. Другой просто возвращает ответ с кодом состояния 501 и внутренней ошибкой сервера.

Обе эти ситуации имеют смысл, но они не означают, что отклонение и исключение - это схожие вещи.

...