This is most likely the reason. It allows your code to follow the happy path for logging in, and treat verification as the exceptional case. Definitely a design choice by the author who self-identifies as a Pythonista.<p><pre><code>  def handle_login():
    try:
      ph.verify(hash, &quot;s3kr3tp4ssw0rd&quot;)
      log_login()
      redirect_to_page()
    except VerificationError:
      log_bad_login()
      redirect_to_login()</code></pre>