575 @param unhandled flag indicating an uncaught exception |
575 @param unhandled flag indicating an uncaught exception |
576 """ |
576 """ |
577 exctype, excval, exctb = excinfo |
577 exctype, excval, exctb = excinfo |
578 if exctype in [SystemExit, bdb.BdbQuit]: |
578 if exctype in [SystemExit, bdb.BdbQuit]: |
579 atexit._run_exitfuncs() |
579 atexit._run_exitfuncs() |
580 self._dbgClient.progTerminated(excval) |
580 if isinstance(excval, int): |
|
581 self._dbgClient.progTerminated(excval) |
|
582 else: |
|
583 self._dbgClient.progTerminated(excval.code) |
581 return |
584 return |
582 |
585 |
583 elif exctype in [SyntaxError, IndentationError]: |
586 elif exctype in [SyntaxError, IndentationError]: |
584 try: |
587 try: |
585 message, (filename, linenr, charnr, text) = excval.args |
588 message, (filename, linenr, charnr, text) = excval[0], excval[1] |
586 except ValueError: |
589 except ValueError: |
587 exclist = [] |
590 exclist = [] |
588 else: |
591 else: |
589 exclist = [message, [filename, linenr, charnr]] |
592 exclist = [message, [filename, linenr, charnr]] |
590 |
593 |
599 if unhandled: |
602 if unhandled: |
600 exctypetxt = "unhandled {0!s}".format(str(exctype)) |
603 exctypetxt = "unhandled {0!s}".format(str(exctype)) |
601 else: |
604 else: |
602 exctypetxt = str(exctype) |
605 exctypetxt = str(exctype) |
603 try: |
606 try: |
604 exclist = [exctypetxt, |
607 exclist = [exctypetxt, str(excval)] |
605 str(excval).encode( |
|
606 self._dbgClient.getCoding(), 'backslashreplace')] |
|
607 except TypeError: |
608 except TypeError: |
608 exclist = [exctypetxt, str(excval)] |
609 exclist = [exctypetxt, str(excval)] |
609 |
610 |
610 if exctb: |
611 if exctb: |
611 frlist = self.__extract_stack(exctb) |
612 frlist = self.__extract_stack(exctb) |