| import sys | |
| from src.logging import logger | |
| class CustomException(Exception): | |
| def __init__(self, error_message, error_details: sys): | |
| self.error_message = error_message | |
| exc_type, exc_value, exc_tb = sys.exc_info() | |
| # Check if traceback exists | |
| if exc_tb is not None: | |
| self.lineno = exc_tb.tb_lineno | |
| self.file_name = exc_tb.tb_frame.f_code.co_filename | |
| else: | |
| self.lineno = None | |
| self.file_name = None | |
| def __str__(self): | |
| # Handle case where no traceback information is available | |
| if self.lineno is None or self.file_name is None: | |
| return f"Error occurred: {self.error_message}" | |
| else: | |
| return f"Error occurred in python script name [{self.file_name}] line number [{self.lineno}] error message [{str(self.error_message)}]" | |
| # if __name__ == '__main__': | |
| # try: | |
| # logger.logging.info("Enter the try block") | |
| # a = 1 / 0 # Division by zero will trigger an exception | |
| # print("This will not be printed", a) | |
| # except Exception as e: | |
| # raise CustomException(e, sys) # Pass the exception and sys to the custom exception | |