Exceptions in micro python
- 
					
					
					
					
 try: 1/0 except Exception as e: sys.print_exception(e)produces division by zero Traceback (most recent call last): File "<stdin>", line 4, in <module> ZeroDivisionError: division by zeroBut I'd like to be able to store the error and the line number that produced it in a file instead of printing it. Storing the error is easy enough with open('ErrorFile', 'wb') as f: f.write(str(e))but I can't figure out a way to access & store the line number. Anyone out there in the pycom firmament mastered this trick? 
 
- 
					
					
					
					
 This post is deleted!
 
- 
					
					
					
					
 Thnx again Robert, for anyone else with a similar requirement I ended up with.... except Exception as e: import sys; from uio import StringIO s=StringIO(); sys.print_exception(e, s) s=s.getvalue(); s=s.split('\n') line=s[1].split(','); line=line[1]; error=s[2]; err=error+line; print(err) with open ('error.log', 'a') as f: f.write(err)
 
- 
					
					
					
					
 @kjm follow these steps. I just executed at the prompt: >>> from uio import StringIO >>> import sys >>> s = StringIO() >>> try: ... 1/0 ... except Exception as e: ... sys.print_exception(e, s) ... >>> x=s.getvalue() >>> x 'Traceback (most recent call last):\n File "<stdin>", line 2, in <module>\nZeroDivisionError: divis ion by zero\n' >>>
 
- 
					
					
					
					
 Hey Robert I need to filter out the double inverted commas before I store in the error.log file I tried err=sys.print_exception(e) err=err.replace('"',"")but I got AttributeError: 'NoneType' object has no attribute 'replace' 
 
- 
					
					
					
					
 Ah, perfect! Tanks muchly. 
 
- 
					
					
					
					
 @kjm You could do as follows: try: 1/0 except Exception as e: import sys with open("error.log", "a") as f: sys.print_exception(e, f)This works for me, 
 Pycom MicroPython 1.20.0.rc6 [8d824a0-dirty] on 2019-01-28; FiPy with ESP32
 
- 
					
					
					
					
 Anybody out there manage to store traceback line numbers to a file on the gpy? 
 
- 
					
					
					
					
 @kjm I'll have to check that tonight. I have no device here at the moment. 
 
- 
					
					
					
					
 not on the gpy you can't! 
 
- 
					
					
					
					
 @eric73 just tried thst on windows MP. If you open a file beforehand, you can use that file handle as second argument to sys.print_exception. 
 
- 
					
					
					
					
 @kjm in documentation function prototype is sys.print_exception(exc, file=sys.stdout)Have you try to open a file and use it with sys.print_exception to see what happened inside the file? 
 (Sorry i have no module to test)
 
