Skip to content

NameError: 'e' referenced outside except block in visit_uri() when visit_error is set #851

@mohityadav8

Description

@mohityadav8

Description

In visit_uri() within minecode/management/commands/run_visit.py, the exception variable e is referenced outside the except block where it is defined.

Inside the try/except block, the variable e is created only when an exception occurs:

except (ConnectionError, Timeout, Exception) as e:
    msg = f"Visit error for URI: {uri_to_visit}"
    msg += "\n".format()
    msg += get_error_message(e)
    visit_errors.append(msg)
    logger.error(msg)

Later in the function, e is used again inside the if visit_error: block:

if visit_error:
    msg = f"Visit error for URI: {uri_to_visit}"
    msg += "\n".format()
    msg += get_error_message(e)  # NOQA

However, this block can execute even when no exception was raised. In such cases, the variable e is not defined, which results in a runtime error:

NameError: name 'e' is not defined

This happens when _visit_router.process(uri_to_visit) returns a visit_error value without raising an exception.

Additionally, the # NOQA comment suppresses lint warnings that would otherwise highlight this issue.

To fix this, the code should avoid referencing e outside the except block and instead use the visit_error value or store the exception in a variable defined before the try block.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions