raise ಸ್ಟೇಟ್ಮೆಂಟ್
ಪೈಥಾನ್ನಲ್ಲಿ, raise ಸ್ಟೇಟ್ಮೆಂಟ್ ಅನ್ನು ಬಳಸಿ, ನಾವು ಒಂದು ಎಕ್ಸೆಪ್ಷನ್ (ದೋಷ) ಅನ್ನು ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ ಅಥವಾ ಹಸ್ತಚಾಲಿತವಾಗಿ (manually) ಎಬ್ಬಿಸಬಹುದು.
try...except ಬ್ಲಾಕ್ ದೋಷಗಳನ್ನು "ಹಿಡಿಯಲು" ಸಹಾಯ ಮಾಡಿದರೆ, raise ಸ್ಟೇಟ್ಮೆಂಟ್ ದೋಷಗಳನ್ನು "ಎಸೆಯಲು" ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಇದನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಇನ್ಪುಟ್ ವ್ಯಾಲಿಡೇಶನ್ ಅಥವಾ ನಿರ್ದಿಷ್ಟ ವ್ಯಾಪಾರ ತರ್ಕದ (business logic) ನಿಯಮಗಳು ಉಲ್ಲಂಘನೆಯಾದಾಗ ಬಳಸಲಾಗುತ್ತದೆ.
raise ಸಿಂಟ್ಯಾಕ್ಸ್
- ExceptionType: ValueError, TypeError, NameError ನಂತಹ ಅಂತರ್ನಿರ್ಮಿತ ಎಕ್ಸೆಪ್ಷನ್ ಕ್ಲಾಸ್ ಅಥವಾ ನಾವೇ ರಚಿಸಿದ ಕಸ್ಟಮ್ ಎಕ್ಸೆಪ್ಷನ್ ಕ್ಲಾಸ್.
- "ಸಂದೇಶ": ದೋಷದ ಬಗ್ಗೆ ವಿವರಿಸುವ ಐಚ್ಛಿಕ ಸ್ಟ್ರಿಂಗ್.
raise ಅನ್ನು ಏಕೆ ಬಳಸಬೇಕು?
- ಇನ್ಪುಟ್ ವ್ಯಾಲಿಡೇಶನ್: ಫಂಕ್ಷನ್ಗೆ ನೀಡಿದ ಇನ್ಪುಟ್ ಅಮಾನ್ಯವಾಗಿದ್ದಾಗ ದೋಷವನ್ನು ಎಬ್ಬಿಸಲು.
- ವ್ಯಾಪಾರ ತರ್ಕ (Business Logic): ಒಂದು ನಿರ್ದಿಷ್ಟ ನಿಯಮ ಪಾಲನೆಯಾಗದಿದ್ದಾಗ (ಉದಾ: ಬ್ಯಾಂಕ್ ಖಾತೆಯಲ್ಲಿ ಸಾಕಷ್ಟು ಹಣವಿಲ್ಲದಿದ್ದಾಗ) ದೋಷವನ್ನು ಸೂಚಿಸಲು.
- ಕಸ್ಟಮ್ ಎಕ್ಸೆಪ್ಷನ್ಗಳು: ನಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ಗೆ ನಿರ್ದಿಷ್ಟವಾದ ದೋಷಗಳನ್ನು ರಚಿಸಲು.
ಉದಾಹರಣೆಗಳು
1. ಇನ್ಪುಟ್ ವ್ಯಾಲಿಡೇಶನ್
ಬಳಕೆದಾರರ ವಯಸ್ಸನ್ನು ಪರಿಶೀಲಿಸುವ ಫಂಕ್ಷನ್ನಲ್ಲಿ, ವಯಸ್ಸು ನಕಾರಾತ್ಮಕವಾಗಿದ್ದರೆ ValueError ಅನ್ನು ಎಬ್ಬಿಸೋಣ.
def process_age(age):
if age < 0:
raise ValueError("ವಯಸ್ಸು ನಕಾರಾತ್ಮಕವಾಗಿರಲು ಸಾಧ್ಯವಿಲ್ಲ.")
elif age < 18:
print("ನೀವು ಅಪ್ರಾಪ್ತರು.")
else:
print("ನೀವು ಪ್ರಾಪ್ತರು.")
try:
process_age(25)
process_age(-5)
except ValueError as e:
print(f"ದೋಷ: {e}")
2. except ಬ್ಲಾಕ್ನಲ್ಲಿ ದೋಷವನ್ನು ಮರು-ಎಬ್ಬಿಸುವುದು (Re-raising an Exception)
ಕೆಲವೊಮ್ಮೆ, ಒಂದು ದೋಷವನ್ನು ಹಿಡಿದ ನಂತರ, ಅದನ್ನು ಲಾಗ್ ಮಾಡಿ, ನಂತರ ಅದೇ ದೋಷವನ್ನು ಮೇಲಿನ ಹಂತದ ಕೋಡ್ಗೆ ಕಳುಹಿಸಬೇಕಾಗಬಹುದು.
try:
result = 10 / 0
except ZeroDivisionError as e:
print("ಲಾಗ್ ಮಾಡಲಾಗುತ್ತಿದೆ: ಶೂನ್ಯದಿಂದ ಭಾಗಾಕಾರದ ದೋಷ ಸಂಭವಿಸಿದೆ.")
# ದೋಷವನ್ನು ಮರು-ಎಬ್ಬಿಸುವುದು
raise
raise ಅನ್ನು ಯಾವುದೇ ಆರ್ಗ್ಯುಮೆಂಟ್ ಇಲ್ಲದೆ ಬಳಸಿದಾಗ, ಅದು ಹಿಡಿದಿಟ್ಟ ಕೊನೆಯ ಎಕ್ಸೆಪ್ಷನ್ ಅನ್ನು ಮರು-ಎಬ್ಬಿಸುತ್ತದೆ.
3. ಕಸ್ಟಮ್ ಎಕ್ಸೆಪ್ಷನ್ಗಳನ್ನು ಎಬ್ಬಿಸುವುದು
ನಮ್ಮದೇ ಆದ ಎಕ್ಸೆಪ್ಷನ್ ಕ್ಲಾಸ್ಗಳನ್ನು ರಚಿಸಿ, ಅವುಗಳನ್ನು ಎಬ್ಬಿಸಬಹುದು. ಇದು ನಮ್ಮ ಕೋಡ್ ಅನ್ನು ಹೆಚ್ಚು ಓದಬಲ್ಲ ಮತ್ತು ನಿರ್ದಿಷ್ಟವಾಗಿಸುತ್ತದೆ.
# ಕಸ್ಟಮ್ ಎಕ್ಸೆಪ್ಷನ್ ಕ್ಲಾಸ್
class InsufficientBalanceError(Exception):
pass
def withdraw(balance, amount):
if amount > balance:
raise InsufficientBalanceError(f"ನಿಮ್ಮ ಖಾತೆಯಲ್ಲಿ ಸಾಕಷ್ಟು ಹಣವಿಲ್ಲ. ಲಭ್ಯವಿರುವ ಬಾಕಿ: {balance}")
return balance - amount
current_balance = 1000
try:
current_balance = withdraw(current_balance, 500)
print(f"ಹಿಂಪಡೆದ ನಂತರದ ಬಾಕಿ: {current_balance}")
current_balance = withdraw(current_balance, 700)
except InsufficientBalanceError as e:
print(f"ವಹಿವಾಟು ವಿಫಲವಾಗಿದೆ: {e}")
raise ಸ್ಟೇಟ್ಮೆಂಟ್, ಪ್ರೋಗ್ರಾಮ್ನ ಹರಿವನ್ನು ನಿಯಂತ್ರಿಸಲು ಮತ್ತು ದೋಷಗಳನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಮತ್ತು ಅರ್ಥಪೂರ್ಣವಾಗಿ ಸಂವಹನ ಮಾಡಲು ಪೈಥಾನ್ನಲ್ಲಿ ಒಂದು ಪ್ರಮುಖ ಸಾಧನವಾಗಿದೆ.