Conform Python error messages.

This commit is contained in:
Simon Forman 2023-02-14 17:40:49 -08:00
parent 2f5f679d61
commit eca5e41cc9
1 changed files with 21 additions and 4 deletions

View File

@ -458,6 +458,21 @@ Read-Evaluate-Print Loop
'''
def hack_error_message(exception):
'''
Some of the Python exception messages (such as when you attempt to
shift a number by a negative amount of bits) are used as Joy error
messages. They should start with a capital letter and end with a
period. This function takes care of that.
'''
message = str(exception)
if message[0].islower():
message = message[0].swapcase() + message[1:]
if '.' != message[-1]:
message += '.'
print(message)
def repl(stack=(), dictionary=None):
'''
Read-Evaluate-Print Loop
@ -479,10 +494,12 @@ def repl(stack=(), dictionary=None):
break
try:
stack, dictionary = run(text, stack, dictionary)
except UnknownSymbolError as sym:
print('Unknown:', sym)
except SystemExit as e:
raise SystemExit from e
except:
print_exc()
except Exception as e:
hack_error_message(e)
print(stack_to_string(stack))
except SystemExit as e:
raise SystemExit from e
@ -530,8 +547,8 @@ def interp(stack=(), dictionary=None):
print(e)
except SystemExit as e:
raise SystemExit from e
except:
print_exc()
except Exception as e:
hack_error_message(e)
print(stack_to_string(stack))
except SystemExit as e:
raise SystemExit from e