This is an automated email from the ASF dual-hosted git repository.

haonan pushed a commit to branch python_error_message
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit c4c06b34cf71ceffeec8d0e8972b7248d81fecf4
Author: HTHou <[email protected]>
AuthorDate: Fri Apr 28 17:16:21 2023 +0800

    [IOTDB-5817] Optimize error message of python client
---
 client-py/iotdb/Session.py                        | 322 ++++++++++------------
 client-py/iotdb/utils/IoTDBConnectionException.py |  29 ++
 2 files changed, 182 insertions(+), 169 deletions(-)

diff --git a/client-py/iotdb/Session.py b/client-py/iotdb/Session.py
index a1be74eae42..882c5b1f015 100644
--- a/client-py/iotdb/Session.py
+++ b/client-py/iotdb/Session.py
@@ -56,6 +56,7 @@ from .thrift.rpc.ttypes import (
     TSLastDataQueryReq,
     TSInsertStringRecordsOfOneDeviceReq,
 )
+from .utils.IoTDBConnectionException import IoTDBConnectionException
 
 from .utils.IoTDBConstants import TSDataType
 
@@ -141,10 +142,11 @@ class Session(object):
                     self.__default_connection = self.init_connection(
                         self.__default_endpoint
                     )
-                except Exception as e:
+                except Exception:
                     if not self.reconnect():
-                        logger.error("Cluster has no nodes to connect")
-                        raise e
+                        raise IoTDBConnectionException(
+                            "Cluster has no nodes to connect"
+                        ) from None
                 break
         self.__client = self.__default_connection.client
         self.__session_id = self.__default_connection.session_id
@@ -165,7 +167,7 @@ class Session(object):
             try:
                 transport.open()
             except TTransport.TTransportException as e:
-                raise e
+                raise IoTDBConnectionException(e) from None
 
         if self.__enable_rpc_compression:
             client = Client(TCompactProtocol.TCompactProtocol(transport))
@@ -199,15 +201,16 @@ class Session(object):
 
         except Exception as e:
             transport.close()
-            logger.exception("session closed because: ", exc_info=e)
-            raise e
+            raise IoTDBConnectionException(e) from None
 
         if self.__zone_id is not None:
             request = TSSetTimeZoneReq(session_id, self.__zone_id)
             try:
                 client.setTimeZone(request)
             except TTransport.TException as e:
-                raise RuntimeError("Could not set time zone because: ", e)
+                raise IoTDBConnectionException(
+                    "Could not set time zone because: ", e
+                ) from None
         else:
             self.__zone_id = self.get_time_zone()
         return SessionConnection(client, transport, session_id, statement_id)
@@ -245,10 +248,9 @@ class Session(object):
                         self.__client.setStorageGroup(self.__session_id, 
group_name)
                     )
                 except TTransport.TException as e1:
-                    logger.exception("create databases fails because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def delete_storage_group(self, storage_group):
         """
@@ -276,10 +278,9 @@ class Session(object):
                         )
                     )
                 except TTransport.TException as e1:
-                    logger.exception("delete database fails because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def create_time_series(
         self,
@@ -327,10 +328,9 @@ class Session(object):
                         self.__client.createTimeseries(request)
                     )
                 except TTransport.TException as e1:
-                    logger.exception("creating time series fails because: ", 
e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def create_aligned_time_series(
         self, device_id, measurements_lst, data_type_lst, encoding_lst, 
compressor_lst
@@ -367,9 +367,9 @@ class Session(object):
                         self.__client.createAlignedTimeseries(request)
                     )
                 except TTransport.TException as e1:
-                    logger.exception("creating time series fails because: ", 
e1)
-                    raise e1
-            raise e
+                    raise IoTDBConnectionException(e1) from None
+            else:
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def create_multi_time_series(
         self,
@@ -418,10 +418,9 @@ class Session(object):
                         self.__client.createMultiTimeseries(request)
                     )
                 except TTransport.TException as e1:
-                    logger.exception("creating multi time series fails 
because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def delete_time_series(self, paths_list):
         """
@@ -432,15 +431,16 @@ class Session(object):
             return Session.verify_success(
                 self.__client.deleteTimeseries(self.__session_id, paths_list)
             )
-        except TTransport.TException:
+        except TTransport.TException as e:
             if self.reconnect():
                 try:
                     return Session.verify_success(
                         self.__client.deleteTimeseries(self.__session_id, 
paths_list)
                     )
                 except TTransport.TException as e1:
-                    logger.exception("deleting time series fails because: ", 
e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
+            else:
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def check_time_series_exists(self, path):
         """
@@ -470,10 +470,9 @@ class Session(object):
                     request.sessionId = self.__session_id
                     return 
Session.verify_success(self.__client.deleteData(request))
                 except TTransport.TException as e1:
-                    logger.exception("data deletion fails because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def delete_data_in_range(self, paths_list, start_time, end_time):
         """
@@ -491,10 +490,9 @@ class Session(object):
                     request.sessionId = self.__session_id
                     return 
Session.verify_success(self.__client.deleteData(request))
                 except TTransport.TException as e1:
-                    logger.exception("data deletion fails because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def insert_str_record(self, device_id, timestamp, measurements, 
string_values):
         """special case for inserting one row of String (TEXT) value"""
@@ -521,10 +519,9 @@ class Session(object):
                         self.__client.insertStringRecord(request)
                     )
                 except TTransport.TException as e1:
-                    logger.exception("insert fails because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def insert_aligned_str_record(
         self, device_id, timestamp, measurements, string_values
@@ -553,10 +550,9 @@ class Session(object):
                         self.__client.insertStringRecord(request)
                     )
                 except TTransport.TException as e1:
-                    logger.exception("insert fails because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def insert_record(self, device_id, timestamp, measurements, data_types, 
values):
         """
@@ -588,10 +584,9 @@ class Session(object):
                     request.sessionId = self.__session_id
                     return 
Session.verify_success(self.__client.insertRecord(request))
                 except TTransport.TException as e1:
-                    logger.exception("insert fails because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def insert_records(
         self, device_ids: list, times, measurements_lst, types_lst, values_lst
@@ -637,10 +632,12 @@ class Session(object):
                             request.sessionId = self.__session_id
                             
Session.verify_success(self.__client.insertRecords(request))
                         except TTransport.TException as e1:
-                            logger.exception("insert fails because: ", e1)
-                            raise e1
+                            raise IoTDBConnectionException(e1) from None
                     else:
-                        raise e
+                        raise IoTDBConnectionException(
+                            self.connection_error_msg()
+                        ) from None
+
             return 0
         else:
             request = self.gen_insert_records_req(
@@ -656,10 +653,11 @@ class Session(object):
                             self.__client.insertRecords(request)
                         )
                     except TTransport.TException as e1:
-                        logger.exception("insert fails because: ", e1)
-                        raise e1
+                        raise IoTDBConnectionException(e1) from None
                 else:
-                    raise e
+                    raise IoTDBConnectionException(
+                        self.connection_error_msg()
+                    ) from None
 
     def insert_aligned_record(
         self, device_id, timestamp, measurements, data_types, values
@@ -693,10 +691,9 @@ class Session(object):
                     request.sessionId = self.__session_id
                     return 
Session.verify_success(self.__client.insertRecord(request))
                 except TTransport.TException as e1:
-                    logger.exception("insert fails because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def insert_aligned_records(
         self, device_ids, times, measurements_lst, types_lst, values_lst
@@ -742,10 +739,12 @@ class Session(object):
                             request.sessionId = self.__session_id
                             
Session.verify_success(self.__client.insertRecords(request))
                         except TTransport.TException as e1:
-                            logger.exception("insert fails because: ", e1)
-                            raise e1
+                            raise IoTDBConnectionException(e1) from None
                     else:
-                        raise e
+                        raise IoTDBConnectionException(
+                            self.connection_error_msg()
+                        ) from None
+
             return 0
         else:
             request = self.gen_insert_records_req(
@@ -761,10 +760,11 @@ class Session(object):
                             self.__client.insertRecords(request)
                         )
                     except TTransport.TException as e1:
-                        logger.exception("insert fails because: ", e1)
-                        raise e1
+                        raise IoTDBConnectionException(e1) from None
                 else:
-                    raise e
+                    raise IoTDBConnectionException(
+                        self.connection_error_msg()
+                    ) from None
 
     def test_insert_record(
         self, device_id, timestamp, measurements, data_types, values
@@ -791,10 +791,9 @@ class Session(object):
                         self.__client.testInsertRecord(request)
                     )
                 except TTransport.TException as e1:
-                    logger.exception("test insert fails because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def test_insert_records(
         self, device_ids, times, measurements_lst, types_lst, values_lst
@@ -824,10 +823,9 @@ class Session(object):
                         self.__client.testInsertRecords(request)
                     )
                 except TTransport.TException as e1:
-                    logger.exception("test insert fails because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def gen_insert_record_req(
         self, device_id, timestamp, measurements, data_types, values, 
is_aligned=False
@@ -923,10 +921,9 @@ class Session(object):
                     request.sessionId = self.__session_id
                     return 
Session.verify_success(self.__client.insertTablet(request))
                 except TTransport.TException as e1:
-                    logger.exception("insert fails because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def insert_tablets(self, tablet_lst):
         """
@@ -966,10 +963,12 @@ class Session(object):
                             request.sessionId = self.__session_id
                             
Session.verify_success(self.__client.insertTablets(request))
                         except TTransport.TException as e1:
-                            logger.exception("insert fails because: ", e1)
-                            raise e1
+                            raise IoTDBConnectionException(e1) from None
                     else:
-                        raise e
+                        raise IoTDBConnectionException(
+                            self.connection_error_msg()
+                        ) from None
+
             return 0
         else:
             request = self.gen_insert_tablets_req(tablet_lst)
@@ -983,10 +982,11 @@ class Session(object):
                             self.__client.insertTablets(request)
                         )
                     except TTransport.TException as e1:
-                        logger.exception("insert fails because: ", e1)
-                        raise e1
+                        raise IoTDBConnectionException(e1) from None
                 else:
-                    raise e
+                    raise IoTDBConnectionException(
+                        self.connection_error_msg()
+                    ) from None
 
     def insert_aligned_tablet(self, tablet):
         """
@@ -1015,10 +1015,9 @@ class Session(object):
                     request.sessionId = self.__session_id
                     return 
Session.verify_success(self.__client.insertTablet(request))
                 except TTransport.TException as e1:
-                    logger.exception("insert fails because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def insert_aligned_tablets(self, tablet_lst):
         """
@@ -1058,10 +1057,12 @@ class Session(object):
                             request.sessionId = self.__session_id
                             
Session.verify_success(self.__client.insertTablets(request))
                         except TTransport.TException as e1:
-                            logger.exception("insert fails because: ", e1)
-                            raise e1
+                            raise IoTDBConnectionException(e1) from None
                     else:
-                        raise e
+                        raise IoTDBConnectionException(
+                            self.connection_error_msg()
+                        ) from None
+
             return 0
         else:
             request = self.gen_insert_tablets_req(tablet_lst, True)
@@ -1075,10 +1076,11 @@ class Session(object):
                             self.__client.insertTablets(request)
                         )
                     except TTransport.TException as e1:
-                        logger.exception("insert fails because: ", e1)
-                        raise e1
+                        raise IoTDBConnectionException(e1) from None
                 else:
-                    raise e
+                    raise IoTDBConnectionException(
+                        self.connection_error_msg()
+                    ) from None
 
     def insert_records_of_one_device(
         self, device_id, times_list, measurements_list, types_list, values_list
@@ -1146,10 +1148,9 @@ class Session(object):
                         self.__client.insertRecordsOfOneDevice(request)
                     )
                 except TTransport.TException as e1:
-                    logger.exception("insert fails because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def insert_aligned_records_of_one_device(
         self, device_id, times_list, measurements_list, types_list, values_list
@@ -1219,10 +1220,9 @@ class Session(object):
                         self.__client.insertRecordsOfOneDevice(request)
                     )
                 except TTransport.TException as e1:
-                    logger.exception("insert fails because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def gen_insert_records_of_one_device_request(
         self,
@@ -1271,10 +1271,9 @@ class Session(object):
                         self.__client.testInsertTablet(request)
                     )
                 except TTransport.TException as e1:
-                    logger.exception("test insert fails because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def test_insert_tablets(self, tablet_list):
         """
@@ -1293,10 +1292,9 @@ class Session(object):
                         self.__client.testInsertTablets(request)
                     )
                 except TTransport.TException as e1:
-                    logger.exception("test insert fails because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def gen_insert_tablet_req(self, tablet, is_aligned=False):
         data_type_values = [data_type.value for data_type in 
tablet.get_data_types()]
@@ -1358,10 +1356,10 @@ class Session(object):
                     request.statementId = self.__statement_id
                     resp = self.__client.executeQueryStatement(request)
                 except TTransport.TException as e1:
-                    logger.exception("execution of query statement fails 
because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
+
         Session.verify_success(resp.status)
         return SessionDataSet(
             sql,
@@ -1391,12 +1389,10 @@ class Session(object):
                     request.statementId = self.__statement_id
                     resp = self.__client.executeUpdateStatement(request)
                 except TTransport.TException as e1:
-                    logger.exception(
-                        "execution of non-query statement fails because: ", e1
-                    )
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
+
         return Session.verify_success(resp.status)
 
     def execute_statement(self, sql: str, timeout=0):
@@ -1412,10 +1408,10 @@ class Session(object):
                     request.statementId = self.__statement_id
                     resp = self.__client.executeStatement(request)
                 except TTransport.TException as e1:
-                    logger.exception("execution of statement fails because: ", 
e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
+
         Session.verify_success(resp.status)
         if resp.columns:
             return SessionDataSet(
@@ -1486,7 +1482,9 @@ class Session(object):
         try:
             resp = self.__client.getTimeZone(self.__session_id)
         except TTransport.TException as e:
-            raise RuntimeError("Could not get time zone because: ", e)
+            raise IoTDBConnectionException(
+                "Could not get time zone because: ", e
+            ) from None
         return resp.timeZone
 
     def set_time_zone(self, zone_id):
@@ -1499,7 +1497,9 @@ class Session(object):
                 )
             )
         except TTransport.TException as e:
-            raise RuntimeError("Could not set time zone because: ", e)
+            raise IoTDBConnectionException(
+                "Could not set time zone because: ", e
+            ) from None
         self.__zone_id = zone_id
 
     @staticmethod
@@ -1592,10 +1592,9 @@ class Session(object):
                     request.statementId = self.__statement_id
                     resp = self.__client.executeRawDataQuery(request)
                 except TTransport.TException as e1:
-                    logger.exception("execution of query statement fails 
because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
         Session.verify_success(resp.status)
         return SessionDataSet(
             "",
@@ -1634,10 +1633,9 @@ class Session(object):
                     request.statementId = self.__statement_id
                     resp = self.__client.executeLastDataQuery(request)
                 except TTransport.TException as e1:
-                    logger.exception("execution of query statement fails 
because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
         Session.verify_success(resp.status)
         return SessionDataSet(
             "",
@@ -1693,10 +1691,9 @@ class Session(object):
                         self.__client.insertStringRecordsOfOneDevice(request)
                     )
                 except TTransport.TException as e1:
-                    logger.exception("insert fails because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def insert_aligned_string_records_of_one_device(
         self,
@@ -1729,10 +1726,9 @@ class Session(object):
                         self.__client.insertStringRecordsOfOneDevice(request)
                     )
                 except TTransport.TException as e1:
-                    logger.exception("insert fails because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def reconnect(self):
         if self.__hosts is None:
@@ -1765,13 +1761,23 @@ class Session(object):
                         self.__endpoint_to_connection = {
                             str(self.__default_endpoint): 
self.__default_connection
                         }
-                except TTransport.TException:
-                    continue
+                except IoTDBConnectionException:
+                    pass
                 break
             if connected:
                 break
         return connected
 
+    def connection_error_msg(self):
+        if self.__hosts is None:
+            msg = "Could not connect to [('%s', %s)]" % (self.__host, 
self.__port)
+        else:
+            node_list = []
+            for i in range(len(self.__hosts)):
+                node_list.append("('%s', %s)" % (self.__hosts[i], 
self.__ports[i]))
+            msg = "Could not connect to any of [%s]" % ", ".join(node_list)
+        return msg
+
     def get_connection(self, device_id):
         if (
             self.__enable_redirection
@@ -1851,10 +1857,9 @@ class Session(object):
                         self.__client.createSchemaTemplate(request)
                     )
                 except TTransport.TException as e1:
-                    logger.exception("create template fails because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def drop_schema_template(self, template_name: str):
         """
@@ -1872,10 +1877,9 @@ class Session(object):
                         self.__client.dropSchemaTemplate(request)
                     )
                 except TTransport.TException as e1:
-                    logger.exception("drop template fails because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def add_measurements_in_template(
         self,
@@ -1915,10 +1919,9 @@ class Session(object):
                         self.__client.appendSchemaTemplate(request)
                     )
                 except TTransport.TException as e1:
-                    logger.exception("append template fails because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def delete_node_in_template(self, template_name: str, path: str):
         """
@@ -1937,10 +1940,9 @@ class Session(object):
                         self.__client.pruneSchemaTemplate(request)
                     )
                 except TTransport.TException as e1:
-                    logger.exception("prune template fails because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def set_schema_template(self, template_name, prefix_path):
         """
@@ -1959,10 +1961,9 @@ class Session(object):
                         self.__client.setSchemaTemplate(request)
                     )
                 except TTransport.TException as e1:
-                    logger.exception("set template fails because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def unset_schema_template(self, template_name, prefix_path):
         """
@@ -1984,10 +1985,9 @@ class Session(object):
                         self.__client.unsetSchemaTemplate(request)
                     )
                 except TTransport.TException as e1:
-                    logger.exception("unset template fails because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def count_measurements_in_template(self, template_name: str):
         """
@@ -2010,12 +2010,9 @@ class Session(object):
                     Session.verify_success(response.status)
                     return response.count
                 except TTransport.TException as e1:
-                    logger.exception(
-                        "count measurements in template fails because: ", e1
-                    )
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def is_measurement_in_template(self, template_name: str, path: str):
         """
@@ -2041,13 +2038,9 @@ class Session(object):
                     Session.verify_success(response.status)
                     return response.result
                 except TTransport.TException as e1:
-                    logger.exception(
-                        "judge the path is measurement or not in template 
fails because: ",
-                        e1,
-                    )
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def is_path_exist_in_template(self, template_name: str, path: str):
         """
@@ -2070,12 +2063,9 @@ class Session(object):
                     Session.verify_success(response.status)
                     return response.result
                 except TTransport.TException as e1:
-                    logger.exception(
-                        "judge the path is in template or not fails because: 
", e1
-                    )
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def show_measurements_in_template(self, template_name: str, pattern: str = 
""):
         """
@@ -2101,12 +2091,9 @@ class Session(object):
                     Session.verify_success(response.status)
                     return response.measurements
                 except TTransport.TException as e1:
-                    logger.exception(
-                        "show measurements in template fails because: ", e1
-                    )
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def show_all_templates(self):
         """
@@ -2129,10 +2116,9 @@ class Session(object):
                     Session.verify_success(response.status)
                     return response.measurements
                 except TTransport.TException as e1:
-                    logger.exception("show all template fails because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def show_paths_template_set_on(self, template_name):
         """
@@ -2154,10 +2140,9 @@ class Session(object):
                     Session.verify_success(response.status)
                     return response.measurements
                 except TTransport.TException as e1:
-                    logger.exception("show paths template set on fails 
because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
     def show_paths_template_using_on(self, template_name):
         """
@@ -2181,10 +2166,9 @@ class Session(object):
                     Session.verify_success(response.status)
                     return response.measurements
                 except TTransport.TException as e1:
-                    logger.exception("show paths template using on fails 
because: ", e1)
-                    raise e1
+                    raise IoTDBConnectionException(e1) from None
             else:
-                raise e
+                raise IoTDBConnectionException(self.connection_error_msg()) 
from None
 
 
 class SessionConnection(object):
@@ -2204,10 +2188,10 @@ class SessionConnection(object):
         try:
             self.client.closeSession(req)
         except TTransport.TException as e:
-            logger.exception(
+            raise IoTDBConnectionException(
                 "Error occurs when closing session at server. Maybe server is 
down. Error message: ",
-                exc_info=e,
-            )
+                e,
+            ) from None
         finally:
             if self.transport is not None:
                 self.transport.close()
diff --git a/client-py/iotdb/utils/IoTDBConnectionException.py 
b/client-py/iotdb/utils/IoTDBConnectionException.py
new file mode 100644
index 00000000000..0f7b895d1f8
--- /dev/null
+++ b/client-py/iotdb/utils/IoTDBConnectionException.py
@@ -0,0 +1,29 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+
+class IoTDBConnectionException(Exception):
+    def __init__(self, reason=None, cause=None, message=None):
+        if reason is not None:
+            super().__init__(reason)
+        elif cause is not None:
+            super().__init__(cause)
+        elif message is not None and cause is not None:
+            super().__init__(message, cause)
+        else:
+            super().__init__()


Reply via email to