# HG changeset patch # User Edouard Tisserant # Date 1573640464 -3600 # Node ID 1b4b335e19ea269bf5d339eef7c73cdf4b09f1ff # Parent 62b5f7b909a969acf66b4245266694d32a280e11 Add FatalError() method to ConfigTreeNode. Extensions can report error addressed to user, without a traceback. diff -r 62b5f7b909a9 -r 1b4b335e19ea ConfigTreeNode.py --- a/ConfigTreeNode.py Thu Oct 24 11:20:04 2019 +0200 +++ b/ConfigTreeNode.py Wed Nov 13 11:21:04 2019 +0100 @@ -670,3 +670,14 @@ msg = _("Could not add child \"{a1}\", type {a2} :\n{a3}\n").format(a1=pname, a2=ptype, a3=text(exc)) self.GetCTRoot().logger.write_error(msg) self.GetCTRoot().logger.write_error(traceback.format_exc()) + + + def FatalError(self, message): + """ Raise an exception that will trigger error message intended to + the user, but without backtrace since it is not a software error """ + + raise UserAddressedException(message) + +class UserAddressedException(Exception): + pass + diff -r 62b5f7b909a9 -r 1b4b335e19ea ProjectController.py --- a/ProjectController.py Thu Oct 24 11:20:04 2019 +0200 +++ b/ProjectController.py Wed Nov 13 11:21:04 2019 +0100 @@ -63,7 +63,7 @@ import targets from runtime.typemapping import DebugTypesSize, UnpackDebugBuffer from runtime import PlcStatus -from ConfigTreeNode import ConfigTreeNode, XSDSchemaErrorMessage +from ConfigTreeNode import ConfigTreeNode, XSDSchemaErrorMessage, UserAddressedException base_folder = paths.AbsParentDir(__file__) @@ -1171,7 +1171,10 @@ try: LibCFilesAndCFLAGS, LibLDFLAGS, LibExtraFiles = self.GetLibrariesCCode( buildpath) - except Exception: + except UserAddressedException as e: + self.logger.write_error(e.message) + return False + except Exception as e: self.logger.write_error( _("Runtime library extensions C code generation failed !\n")) self.logger.write_error(traceback.format_exc()) @@ -1182,6 +1185,9 @@ CTNLocationCFilesAndCFLAGS, CTNLDFLAGS, CTNExtraFiles = self._Generate_C( buildpath, self.PLCGeneratedLocatedVars) + except UserAddressedException as e: + self.logger.write_error(e.message) + return False except Exception: self.logger.write_error( _("Runtime IO extensions C code generation failed !\n"))