@@ -107,7 +107,8 @@ def getCondition(self) -> Optional[str]:
107107 if self ._origin is not None and is_instance_of (
108108 gw , self ._origin , "org.apache.spark.SparkThrowable"
109109 ):
110- return self ._origin .getCondition ()
110+ utils = SparkContext ._jvm .PythonErrorUtils # type: ignore[union-attr]
111+ return utils .getCondition (self ._origin )
111112 else :
112113 return None
113114
@@ -118,68 +119,48 @@ def getErrorClass(self) -> Optional[str]:
118119 def getMessageParameters (self ) -> Optional [Dict [str , str ]]:
119120 from pyspark import SparkContext
120121 from py4j .java_gateway import is_instance_of
121- from py4j .protocol import Py4JError
122122
123123 assert SparkContext ._gateway is not None
124124
125125 gw = SparkContext ._gateway
126126 if self ._origin is not None and is_instance_of (
127127 gw , self ._origin , "org.apache.spark.SparkThrowable"
128128 ):
129- try :
130- return dict (self ._origin .getMessageParameters ())
131- except Py4JError as e :
132- if "py4j.Py4JException" in str (e ) and "Method getMessageParameters" in str (e ):
133- return None
134- raise e
129+ utils = SparkContext ._jvm .PythonErrorUtils # type: ignore[union-attr]
130+ return dict (utils .getMessageParameters (self ._origin ))
135131 else :
136132 return None
137133
138134 def getSqlState (self ) -> Optional [str ]:
139135 from pyspark import SparkContext
140136 from py4j .java_gateway import is_instance_of
141- from py4j .protocol import Py4JError
142137
143138 assert SparkContext ._gateway is not None
144139 gw = SparkContext ._gateway
145140 if self ._origin is not None and is_instance_of (
146141 gw , self ._origin , "org.apache.spark.SparkThrowable"
147142 ):
148- try :
149- return self ._origin .getSqlState ()
150- except Py4JError as e :
151- if "py4j.Py4JException" in str (e ) and "Method getSqlState" in str (e ):
152- return None
153- raise e
143+ utils = SparkContext ._jvm .PythonErrorUtils # type: ignore[union-attr]
144+ return utils .getSqlState (self ._origin )
154145 else :
155146 return None
156147
157148 def getMessage (self ) -> str :
158149 from pyspark import SparkContext
159150 from py4j .java_gateway import is_instance_of
160- from py4j .protocol import Py4JError
161151
162152 assert SparkContext ._gateway is not None
163153 gw = SparkContext ._gateway
164154
165155 if self ._origin is not None and is_instance_of (
166156 gw , self ._origin , "org.apache.spark.SparkThrowable"
167157 ):
168- try :
169- error_class = self ._origin .getCondition ()
170- except Py4JError as e :
171- if "py4j.Py4JException" in str (e ) and "Method getCondition" in str (e ):
172- return ""
173- raise e
174- try :
175- message_parameters = self ._origin .getMessageParameters ()
176- except Py4JError as e :
177- if "py4j.Py4JException" in str (e ) and "Method getMessageParameters" in str (e ):
178- return ""
179- raise e
158+ utils = SparkContext ._jvm .PythonErrorUtils # type: ignore[union-attr]
159+ errorClass = utils .getCondition (self ._origin )
160+ messageParameters = utils .getMessageParameters (self ._origin )
180161
181162 error_message = getattr (gw .jvm , "org.apache.spark.SparkThrowableHelper" ).getMessage (
182- error_class , message_parameters
163+ errorClass , messageParameters
183164 )
184165
185166 return error_message
@@ -189,7 +170,6 @@ def getMessage(self) -> str:
189170 def getQueryContext (self ) -> List [BaseQueryContext ]:
190171 from pyspark import SparkContext
191172 from py4j .java_gateway import is_instance_of
192- from py4j .protocol import Py4JError
193173
194174 assert SparkContext ._gateway is not None
195175
@@ -198,13 +178,8 @@ def getQueryContext(self) -> List[BaseQueryContext]:
198178 gw , self ._origin , "org.apache.spark.SparkThrowable"
199179 ):
200180 contexts : List [BaseQueryContext ] = []
201- try :
202- context = self ._origin .getQueryContext ()
203- except Py4JError as e :
204- if "py4j.Py4JException" in str (e ) and "Method getQueryContext" in str (e ):
205- return []
206- raise e
207- for q in context :
181+ utils = SparkContext ._jvm .PythonErrorUtils # type: ignore[union-attr]
182+ for q in utils .getQueryContext (self ._origin ):
208183 if q .contextType ().toString () == "SQL" :
209184 contexts .append (SQLQueryContext (q ))
210185 else :
0 commit comments