@@ -52,13 +52,42 @@ ClassMethod DivideByZero() As %Status
5252ClassMethod DivideByZeroPython () [ Language = python ]
5353{
5454 import sample
55+ import traceback
5556 import iris
5657 try :
5758 print (" divide by zero=" + str (sample .dividezero (1 )))
5859 except ZeroDivisionError as e :
5960 errobj =iris .cls (" %Exception.General" )._New (str (e ),42 )
60- a =errobj .Log ()
61- print (" Caught exception: " + str (e ))
61+ stack _trace _list = traceback .format _tb (e .__traceback __)
62+ if stack _trace _list :
63+ last _instruction _line = stack _trace _list [-1 ].strip ()
64+ errobj .Location = last _instruction _line
65+ errobj .Log ()
66+ print (" Caught exception: " +str (e ))
67+ }
68+
69+ ClassMethod DivideByZeroPython2 () [ Language = python ]
70+ {
71+ import sample
72+ import traceback
73+ import iris
74+ import os
75+ try :
76+ print (" divide by zero=" + str (sample .dividezero (1 )))
77+ except ZeroDivisionError as e :
78+ tb = e .__traceback __
79+ last _frame = traceback .extract _tb (tb )[-1 ]
80+
81+ # 2 . Extract specific parts
82+ error _name = f " <{type(e).__name__.upper()}>" # e .g ., <NAMEERROR >
83+ line _no = last _frame .lineno # e .g ., 6
84+ func _name = last _frame .name # e .g ., <module > or my _func
85+ filename = os .path .basename (last _frame .filename ).replace ('.py ', '')
86+
87+ iris _error = f " {func_name}+{line_no}^{filename}"
88+ errobj =iris .cls (" %Exception.General" )._New (error _name ,2603 ,iris _error )
89+ errobj .Log ()
90+ print (" Caught exception: " +str (e ))
6291}
6392
6493}
0 commit comments