Created
March 7, 2023 07:13
-
-
Save Priyanshu9898/9312aa06f4ec4b610f72faf049ae9f6a to your computer and use it in GitHub Desktop.
Custom Exception Handling Code
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import sys | |
import logging | |
import pandas as pd | |
def error_message_detail(error, error_detail:sys): | |
_, _, exc_tb = error_detail.exc_info() | |
file_name = exc_tb.tb_frame.f_code.co_filename | |
error_message = "Error occured in Python Script name [{0}] Line No. [{1}] Error Message [{2}]".format(file_name, exc_tb.tb_lineno, str(error)) | |
return error_message | |
class customException(Exception): | |
# Constructor or Initializer | |
def __init__(self, error_message, error_detail:sys): | |
super().__init__(self, error_message) | |
self.error_message = error_message_detail(error_message, error_detail=error_detail) | |
# __str__ is to print() the value | |
def __str__(self): | |
return self.error_message | |
def load_dataset(file_name): | |
try: | |
# load the dataset from file_name | |
df = pd.read_csv(file_name) | |
except FileNotFoundError as e: | |
raise customException('File not found', error_detail=sys) | |
except ValueError as e: | |
raise customException('Invalid file format', error_detail=sys) | |
if __name__ == "__main__": | |
try: | |
load_dataset('dataset.csv') | |
except customException as e: | |
print(e) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Here is the modified code for exception.py
import sys
from src.logger import logging
def error_message_detail(error,error_detail=sys.exc_info()):
,,exc_tb=error_detail
if exc_tb is not None:
file_name = exc_tb.tb_frame.f_code.co_filename
line_number = exc_tb.tb_lineno
else:
file_name = "unknown"
line_number = "unknown"
error_message="Error occured in python script name [{0}] line number [{1}] error message[{2}]".format(
file_name,line_number,str(error))
class CustomException(Exception):
def init(self,error_message,error_detail=sys.exc_info()):
super().init(error_message)
self.error_message=error_message_detail(error_message,error_detail=error_detail)
After this please also make the change in data_ingestion.py file