Python Forum
How to programmatically exit without Traceback?
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How to programmatically exit without Traceback?
#4
To exit a program without an error traceback you need to write a program that doesn't raise an exception. Or if it does raise an exception, provide an exception handler (as per Larz60+).

When I run your program like this:
import sys

def sum_two(a,b):
    if type(a) != int or type(b) != int:
        print('a and b must both be integers.')
        sys.exit()
    if a+b > 15 and a+b < 20:
        sum = 20
    else: sum = a+b
    return sum

sum_two(3.5, 6)
I do not get any mention of using exit or quit. I get this:
Output:
a and b must both be integers.
From the docs:

sys.exit([arg])
Exit from Python. This is implemented by raising the SystemExit exception, so cleanup actions specified by finally clauses of try statements are honored, and it is possible to intercept the exit attempt at an outer level.

The optional argument arg can be an integer giving the exit status (defaulting to zero), or another type of object. If it is an integer, zero is considered “successful termination” and any nonzero value is considered “abnormal termination” by shells and the like. Most systems require it to be in the range 0–127, and produce undefined results otherwise. Some systems have a convention for assigning specific meanings to specific exit codes, but these are generally underdeveloped; Unix programs generally use 2 for command line syntax errors and 1 for all other kind of errors. If another type of object is passed, None is equivalent to passing zero, and any other object is printed to stderr and results in an exit code of 1. In particular, sys.exit("some error message") is a quick way to exit a program when an error occurs.
Since exit() ultimately “only” raises an exception, it will only exit the process when called from the main thread, and the exception is not intercepted.

Changed in version 3.6: If an error occurs in the cleanup after the Python interpreter has caught SystemExit (such as an error flushing buffered data in the standard streams), the exit status is changed to 120.

My guess is there is something catching the SystemExit exception and generating the messages you are seeing. What are you using for development? I am running Python 3.8.2 on Windows 10. I would stop using sys.exit() (I never use it) and find a better way to handle the problem.

By the way, ou can write your comparison:
if a+b > 15 and a+b < 20:
    sum = 20
like this:
if 15 < a+b < 20:
    sum = 20
And though this is allowed, all style guidelines say you should never use it;
else: sum = a+b
Reply


Messages In This Thread
RE: How to programmatically exit without Traceback? - by deanhystad - Feb-24-2021, 05:20 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
Question How create programmatically variables ? SpongeB0B 6 1,503 Aug-19-2023, 05:10 AM
Last Post: SpongeB0B
  How to programmatically stop a program in Jupyter Notebook? Mark17 11 38,306 Feb-12-2023, 01:41 PM
Last Post: jp21in
  Create Excel Line Chart Programmatically dee 3 1,260 Dec-30-2022, 08:44 PM
Last Post: dee
  python difference between sys.exit and exit() mg24 1 1,969 Nov-12-2022, 01:37 PM
Last Post: deanhystad
  Adding Language metadata to a PDF programmatically bhargavi22 0 1,991 Aug-17-2020, 12:53 PM
Last Post: bhargavi22

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020