So, we had instance in the past where code were broken in IOT devices because of syntax errors.
While there is exception handling in the code. I wanted to create a script to check and make sure that the codes compiles and run without syntax error, else the script replace the broken code by an earlier version.
I tried this
from delta_script import get_update
def test_function():
try:
get_update()
except SyntaxError as syntaxError:
replace_script("utility.py", syntaxError)
except Exception as ignored:
pass
However the problem it when it hit a SyntaxError, it just throw it on the screen and replace_script
because the exception happens on delta_script.py from which get_update() was imported.
So what's the solution in this case?
I have also another function
def compile():
try:
for file in compile_list:
py_compile.compile(file)
except Exception as exception:
script_heal(file, exception)
however in this one, it never report any exception, because I go and introduce syntaxError and the code still compile without reporting an error
Any one could help me figure out a better way to solve those two problems? thanks,
SyntaxErrorinstead of catching it?SyntaxErroris a problem in code(except you run code string which is input by user). So usually it is not to be handled, it should be fixed.SyntaxError, you have more urgent problems than that error. A syntax error happens before run-time by definition. It's literally impossible to miss if you just dopython your_scriptbefore deployment. Or do you import dynamicly generated scripts for some reason?