1

I would like to set "errored" to False if the exception is a Timeout error. I'm a little confused how try except flows work in python here (and surprisingly couldn't find any doc clarifying this - if anyone has one regarding how the blocks are executed please feel free to link), like if multiple exception blocks are true, do they all execute? Or just the first one? I assume the below doesn't work because we don't have access to 'r'

try:
    r = request(
        method="POST",
        ...
    )
    r.raise_for_status()
    resp = r.json()
    errored = False

except Exception as e:
    resp = _parse_json(e)
    errored = True
    if r.Timeout:
        errored = False

And the below is the effect I want, just not sure if it works as intended with the try/except flow

try:
    r = request(
        ...
    )
    r.raise_for_status()
    resp = r.json()
    errored = False

except Exception as e:
    resp = _parse_json(e)
    errored = True

except r.Timeout:
    errored = False

This is my first time handling/making post requests so please bear with me!

user90823745
  • 149
  • 1
  • 2
  • 15

1 Answers1

1

From what I've researched, in python the flow falls on the first except that matches the exception. In this case, place the timeout exception first.

import socket
import logging

errored = False
hostname = '10.255.255.1'
port = 443
socket.setdefaulttimeout(0.1)
try:
    sock = socket.create_connection((hostname, port))

except ZeroDivisionError:
    print('must not enter here')

except socket.timeout as err:
    print('timeout')
    errored = False
except Exception as ex:
    print('base exception')
    errored = True
except:
    print('unknown exception')
    errored = True
else:
    print('success')
finally:
    print('This is always executed')  

This code example makes a request that will timeout, will always fall into

except socket.timeout as err:

and then in finally. you can change the order of except to test.

here a link about trycatch.

Hope this helps

matmahnke
  • 432
  • 3
  • 10
  • I just found something that might complement my answer https://stackoverflow.com/questions/6470428/catch-multiple-exceptions-in-one-line-except-block?rq=1 – matmahnke Oct 17 '22 at 17:33