akka-http中的拒绝和异常有什么区别



我不明白akka-http中的拒绝和异常之间的区别,它们对我来说看起来是多余的,因为它们的管理方式几乎相同。

不可能有异常类型的拒绝,因此在我们的指令中,我们可以捕获异常并触发适当的拒绝。

拒绝和异常之间的区别是语义上的。

拒绝允许您对请求参数进行验证。如果某些参数不匹配(对于此指令不正确),则指令可以拒绝请求,而其他一些指令可以尝试匹配请求和处理比。

异常表示指令中存在意外行为。通常,当指令处理请求时,它是在匹配之后。

据我了解,从您的问题中,您可能会遇到以下情况之一:

  • 您在匹配指令时遇到异常,这可能意味着您无法进行正确的验证,唯一的方法是调用函数并查找异常。如果抛出异常,则表示该指令不匹配,并且您创建拒绝。

  • 创建拒绝作为异常处理的一部分。这是处理异常的方法之一。另一个只是返回带有 501 状态代码和内部服务器错误的响应。

这两种情况都是有道理的,但这并不意味着拒绝和例外是相似的事情。

最新更新