Changeset 13566
- Timestamp:
- Sep 20, 2019 4:15:14 PM (3 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/dev-5819/Python/src/pymodelica/compiler_wrappers.py
r13537 r13566 26 26 from pymodelica.common.core import list_to_string 27 27 from .compiler_exceptions import * 28 from sys import version_info 28 29 29 30 … … 40 41 Modelica models. A compiler instance can be used multiple times. 41 42 """ 43 if version_info > (3, 0): 44 self._is_python3 = True 45 self._java_exception = jpype.JException 46 else: 47 self._is_python3 = False 48 self._java_exception = jpype.JavaException 49 42 50 try: 43 51 options = ModelicaCompilerInterface.createOptions() 44 except jpype.JException as ex:52 except self._java_exception as ex: 45 53 self._handle_exception(ex) 46 54 … … 48 56 49 57 self._compiler = pym._create_compiler(ModelicaCompilerInterface, options) 58 50 59 51 60 def set_options(self, compiler_options): … … 90 99 try: 91 100 self._compiler.setLogger(log_string) 92 except jpype.JException as ex:101 except self._java_exception as ex: 93 102 self._handle_exception(ex) 94 103 … … 129 138 try: 130 139 target_obj = self._compiler.createTargetObject(target, version) 131 except jpype.JException as ex:140 except self._java_exception as ex: 132 141 self._handle_exception(ex) 133 142 return target_obj … … 148 157 try: 149 158 option = self._compiler.getBooleanOption(key) 150 except jpype.JException as ex:159 except self._java_exception as ex: 151 160 self._handle_exception(ex) 152 161 return bool(option) … … 171 180 try: 172 181 self._compiler.setBooleanOption(key, value) 173 except jpype.JException as ex:182 except self._java_exception as ex: 174 183 self._handle_exception(ex) 175 184 … … 189 198 try: 190 199 option = self._compiler.getIntegerOption(key) 191 except jpype.JException as ex:200 except self._java_exception as ex: 192 201 self._handle_exception(ex) 193 202 return option … … 212 221 try: 213 222 self._compiler.setIntegerOption(key, value) 214 except jpype.JException as ex:223 except self._java_exception as ex: 215 224 self._handle_exception(ex) 216 225 … … 230 239 try: 231 240 option = self._compiler.getRealOption(key) 232 except jpype.JException as ex:241 except self._java_exception as ex: 233 242 self._handle_exception(ex) 234 243 return option … … 253 262 try: 254 263 self._compiler.setRealOption(key, value) 255 except jpype.JException as ex:264 except self._java_exception as ex: 256 265 self._handle_exception(ex) 257 266 … … 271 280 try: 272 281 option = self._compiler.getStringOption(key) 273 except jpype.JException as ex:282 except self._java_exception as ex: 274 283 self._handle_exception(ex) 275 284 return str(option) … … 294 303 try: 295 304 self._compiler.setStringOption(key, value) 296 except jpype.JException as ex:305 except self._java_exception as ex: 297 306 self._handle_exception(ex) 298 307 … … 361 370 unit = self._compiler.compileUnit(class_name, file_name, target, version, compile_to) 362 371 self._compiler.closeLogger() 363 except jpype.JException as ex:372 except self._java_exception as ex: 364 373 self._handle_exception(ex) 365 374 from .compiler import CompilerResult … … 401 410 sr = self._compiler.parseModel(model_file_name) 402 411 return sr 403 except jpype.JException as ex:412 except self._java_exception as ex: 404 413 self._handle_exception(ex) 405 414 … … 439 448 ipr = self._compiler.instantiateModel(source_root, model_class_name, target) 440 449 return ipr 441 except jpype.JException as ex:450 except self._java_exception as ex: 442 451 self._handle_exception(ex) 443 452 … … 477 486 fclass = self._compiler.flattenModel(inst_class_decl, target, None) 478 487 return fclass 479 except jpype.JException as ex:488 except self._java_exception as ex: 480 489 self._handle_exception(ex) 481 490 … … 507 516 try: 508 517 self._compiler.generateCode(fclass, target) 509 except jpype.JException as ex:518 except self._java_exception as ex: 510 519 self._handle_exception(ex) 511 520 … … 516 525 or the default JError. 517 526 """ 518 if ex.javaClass() is CompilerException: 527 def _py_handle_exception(raised_ex, ref_ex): 528 # Due to differences in jpype between 0.6.2 and 0.7.0 529 # we need to compare the raised exception with the reference exception 530 # in different ways. 531 return type(raised_ex) is ref_ex if self._is_python3 else raised_ex.javaClass() is ref_ex 532 533 #print("ex.message() = {}".format(ex.message())) 534 #print("ex.args = {}".format(ex.args)) 535 #print("ex.stacktrace() = {}".format(ex.stacktrace())) 536 #print("str(ex) = {}".format(str(ex))) 537 #import sys; sys.exit() 538 #raise ex 539 #ex.message=ex.message() 540 #raise ex doesnt work because they are different in py2 and py3 541 #raise ex 542 if _py_handle_exception(ex, CompilerException): 519 543 arraylist = ex.__javaobject__.getProblems() 520 544 itr = arraylist.iterator() … … 544 568 raise CompilerError(errors, warnings) 545 569 546 if ex.javaClass() is IllegalCompilerArgumentException:570 if _py_handle_exception(ex, IllegalCompilerArgumentException): 547 571 raise IllegalCompilerArgumentError( 548 572 str(ex.__javaobject__.getMessage())) 549 573 550 if ex.javaClass() is ModelicaClassNotFoundException:574 if _py_handle_exception(ex, ModelicaClassNotFoundException): 551 575 raise ModelicaClassNotFoundError( 552 576 str(ex.__javaobject__.getClassName())) 553 577 554 if ex.javaClass() is IllegalLogStringException:578 if _py_handle_exception(ex, IllegalLogStringException): 555 579 raise IllegalLogStringError( 556 580 str(ex.__javaobject__.getMessage())) 557 581 558 if ex.javaClass() is jpype.java.io.FileNotFoundException:582 if _py_handle_exception(ex, jpype.java.io.FileNotFoundException): 559 583 raise IOError( 560 584 '\nMessage: '+ex.message().encode('utf-8')+\ 561 585 '\nStacktrace: '+ex.stacktrace().encode('utf-8')) 562 586 563 if ex.javaClass() is jpype.java.io.IOException:587 if _py_handle_exception(ex, jpype.java.io.IOException): 564 588 raise IOError( 565 '\nMessage: '+ ex.message().encode('utf-8')+\566 '\nStacktrace: '+ ex.stacktrace().encode('utf-8'))567 568 if ex.javaClass() is jpype.javax.xml.xpath.XPathExpressionException:589 '\nMessage: '+str(ex.message().encode('utf-8'))+\ 590 '\nStacktrace: '+str(ex.stacktrace().encode('utf-8'))) 591 592 if _py_handle_exception(ex, jpype.javax.xml.xpath.XPathExpressionException): 569 593 raise XPathExpressionError( 570 '\nMessage: '+ ex.message().encode('utf-8')+\571 '\nStacktrace: '+ ex.stacktrace().encode('utf-8'))572 573 if ex.javaClass() is jpype.javax.xml.parsers.ParserConfigurationException:594 '\nMessage: '+str(ex.message().encode('utf-8'))+\ 595 '\nStacktrace: '+str(ex.stacktrace().encode('utf-8'))) 596 597 if _py_handle_exception(ex, jpype.javax.xml.parsers.ParserConfigurationException): 574 598 raise ParserConfigurationError( 575 '\nMessage: '+ ex.message().encode('utf-8')+\576 '\nStacktrace: '+ ex.stacktrace().encode('utf-8'))577 578 if ex.javaClass() is SAXExceptionor \579 ex.javaClass() is SAXNotRecognizedExceptionor \580 ex.javaClass() is SAXNotSupportedExceptionor \581 ex.javaClass() is SAXParseException:599 '\nMessage: '+str(ex.message().encode('utf-8'))+\ 600 '\nStacktrace: '+str(ex.stacktrace().encode('utf-8'))) 601 602 if _py_handle_exception(ex, SAXException) or \ 603 _py_handle_exception(ex, SAXNotRecognizedException) or \ 604 _py_handle_exception(ex, SAXNotSupportedException) or \ 605 _py_handle_exception(ex, SAXParseException): 582 606 raise SAXError( 583 '\nMessage: '+ ex.message().encode('utf-8')+\584 '\nStacktrace: '+ ex.stacktrace().encode('utf-8'))607 '\nMessage: '+str(ex.message().encode('utf-8'))+\ 608 '\nStacktrace: '+str(ex.stacktrace().encode('utf-8'))) 585 609 586 if ex.javaClass() is UnknownOptionException:610 if _py_handle_exception(ex, UnknownOptionException): 587 611 raise UnknownOptionError( 588 ex.message().encode('utf-8')+'\nStacktrace: '+\589 ex.stacktrace().encode('utf-8'))590 591 if ex.javaClass() is InvalidOptionValueException:612 str(ex.message().encode('utf-8'))+'\nStacktrace: '+\ 613 str(ex.stacktrace().encode('utf-8'))) 614 615 if _py_handle_exception(ex, InvalidOptionValueException): 592 616 raise InvalidOptionValueError( 593 ex.message().encode('utf-8')+'\nStacktrace: '+\594 ex.stacktrace().encode('utf-8'))595 596 if ex.javaClass() is jpype.java.lang.Exception:617 str(ex.message().encode('utf-8'))+'\nStacktrace: '+\ 618 str(ex.stacktrace().encode('utf-8'))) 619 620 if _py_handle_exception(ex, jpype.java.lang.Exception): 597 621 raise Exception( 598 '\nMessage: '+ ex.message().encode('utf-8')+\599 '\nStacktrace: '+ ex.stacktrace().encode('utf-8'))600 601 if ex.javaClass() is jpype.java.lang.NullPointerException:602 raise JError( ex.stacktrace().encode('utf-8'))603 604 if ex.javaClass() is ModelicaCCodeCompilationExceptionor \605 ex.javaClass() is OptimicaCCodeCompilationException:622 '\nMessage: '+str(ex.message().encode('utf-8'))+\ 623 '\nStacktrace: '+str(ex.stacktrace().encode('utf-8'))) 624 625 if _py_handle_exception(ex, jpype.java.lang.NullPointerException): 626 raise JError(str(ex.stacktrace().encode('utf-8'))) 627 628 if _py_handle_exception(ex, ModelicaCCodeCompilationException) or \ 629 _py_handle_exception(ex, OptimicaCCodeCompilationException): 606 630 raise CcodeCompilationError( 607 '\nMessage: '+ ex.message().encode('utf-8')+\608 '\nStacktrace: '+ ex.stacktrace().encode('utf-8'))609 610 raise JError( ex.stacktrace().encode('utf-8'))631 '\nMessage: '+str(ex.message().encode('utf-8'))+\ 632 '\nStacktrace: '+str(ex.stacktrace().encode('utf-8'))) 633 634 raise JError(str(ex.stacktrace().encode('utf-8'))) 611 635 612 636 class OptimicaCompiler(ModelicaCompiler): … … 625 649 try: 626 650 options = OptimicaCompilerInterface.createOptions() 627 except jpype.JException as ex:651 except self._java_exception as ex: 628 652 self._handle_exception(ex) 629 653 … … 651 675 try: 652 676 self._compiler.setBooleanOption(key, value) 653 except jpype.JException as ex:654 self._handle_exception(ex) 677 except self._java_exception as ex: 678 self._handle_exception(ex)
Note: See TracChangeset
for help on using the changeset viewer.