Skip to content

Can't catch JSON.parse() error? #253

Open

Description

If I set the mode to 'json', and python prints something that isn't JSON, then python-shell's use of JSON.parse() causes an error as one would expect. However, I can't seem to catch the error and it's just crashing my program.

I've tried wrapping either a PythonShell() object or a PythonShell.run() function in a try catch, using the function (err) callback, listing to an 'error' emit, but nothing can seem to catch this error.

For now I can set it to text mode and manually call JSON.parse() but this seems an unsatisfying solution.

Activity

  1. Almenon commented on Oct 2, 2021

    @Almenon
    Collaborator

    Yeah... this isn't great :|

    The problem is that the parse method is called inside a pipe handler, so the context in which the error happens is isolated to that specific handler. The handler is called asynchronously and you can't catch errors in asynchronus code with a try-catch (see # 2).

    So for now unfortunately your solution is the correct one.

    The library could be improved by catching the error inside the handler and emitting a parseError event, so I'll categorize this as a enhancement idea.

  2. petem24 commented on Jan 25, 2024

    @petem24

    Same issue here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions