# এক্সেপশন হ্যান্ডেলিং

নিচের প্রোগ্রামটি রান করলে যদি ইনপুট হিসাবে ০ দেই তাহলে ০ দ্বারা কোন কিছু ভাগ হয়না যার কারণে প্রোগ্রামটি থেমে যাবে পরের প্রিন্ট স্টেটমেন্টটি print('Yes You Are Success') রান হবে না।

```python
roll = int(input("Enter Number:"))

print(10/roll)

print('Yes You Are Success')
```

<figure><img src="https://266499525-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtiINvXcTIgpEyOdCjrwk%2Fuploads%2FQaSkQdCfmdZjutMnxHrl%2Fimage.png?alt=media&#x26;token=29e0014b-d923-4bb4-b907-e8c5404a4782" alt=""><figcaption></figcaption></figure>

আমরা চাই আমাদের প্রোগ্রাম এ যদি কোন এরর আসে তাহলে পরের লাইনের কোড যেন বন্ধ না হয় এজন্য try except ব্লক ব্যবহার করি

```python
try:
    roll = int(input("Enter Number :"))

    print(10/roll)
except ZeroDivisionError:
    print('0 is not devide')


print('Yes You Are Success')
```

<figure><img src="https://266499525-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtiINvXcTIgpEyOdCjrwk%2Fuploads%2F4Rn7wtPiWJXf97uvkmGq%2Fimage.png?alt=media&#x26;token=35a2b985-2acf-4e69-8fec-76c9466c86a7" alt=""><figcaption></figcaption></figure>

মনে করুন, আপনি একটি ক্যালকুলেটর প্রোগ্রাম লেখতে যাচ্ছেন যেখানে ব্যবহারকারী দুটি সংখ্যা এবং একটি অপারেটর ইনপুট দেয় (+,-,\*,/)।

```python

num1= float(input('Enter The First Number :'))
num2 = float(input('Enter The Second Number :')) 
operator = input("Enter an operator (+, -, *, /): ")

if operator == '+':
    result = num1 + num2
elif operator == '-'  :
    result = num1 - num2          
elif operator == '*'  :
    result = num1 * num2           
elif operator == '/'  :
    result = num1 / num2

print  (result)            

```

**প্রোগ্রামটি রান করি**

প্রথম ইনপুট হিসাবে ৫০ দ্বিতীয় ইনপুট হিসাবে ৪০ এবং অপারেটর হিসাবে + দেই তাহলে যোগফল পাবো।

<figure><img src="https://266499525-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtiINvXcTIgpEyOdCjrwk%2Fuploads%2F6xZUYBit8B374t3tPgoz%2Fimage.png?alt=media&#x26;token=287c745e-fcdd-43c0-b23f-41c42e85ca44" alt=""><figcaption></figcaption></figure>

আমি যদি +,-,\*,/ ছাড়া অন্য কোন ইনপুট দেই তাহলে এরর শো করে প্রোগ্রাম বন্ধ হয়ে যাবে যেমন আমি অপারেটর হিসাবে r অক্ষর দিলাম দেখি কি শো করে।

<figure><img src="https://266499525-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtiINvXcTIgpEyOdCjrwk%2Fuploads%2FDtM7llD5J1PbLHmcN8Z7%2Fimage.png?alt=media&#x26;token=7dbb7bf7-c652-45cf-9cf4-021ed7d8bbf6" alt=""><figcaption></figcaption></figure>

এই সমস্যা সমাধানের জন্য আমরা else ব্যবহার করতে পারি

```python

num1= float(input('Enter The First Number :'))
num2 = float(input('Enter The Second Number :')) 
operator = input("Enter an operator (+, -, *, /): ")

if operator == '+':
    result = num1 + num2
elif operator == '-'  :
    result = num1 - num2          
elif operator == '*'  :
    result = num1 * num2           
elif operator == '/'  :
    result = num1 / num2
else:
    print("Enter Valid Operator")
    exit(1)

print  (result)            

```

<figure><img src="https://266499525-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtiINvXcTIgpEyOdCjrwk%2Fuploads%2FZ8UyEWacq5lisVd4aB0L%2Fimage.png?alt=media&#x26;token=f960a8f2-1e7f-4c91-81c5-b8cb052c8ee1" alt=""><figcaption></figcaption></figure>

মনে করি ইনপুট হিসাবে নাম্বারের পরিবর্তে অক্ষর দিলাম বা অন্য সিম্বল দিলাম এই সমস্যা সমাধানের জন্য try except ব্লক ব্যবহার করবো যদি কোন ইনপুট ভুল হয় তা except ব্লকে প্রিন্ট করে বলে দেব

```python

try:
    num1= float(input('Enter The First Number :'))
    num2 = float(input('Enter The Second Number :')) 
    operator = input("Enter an operator (+, -, *, /): ")
    
    if operator == '+':
            result = num1 + num2
    elif operator == '-':
        result = num1 - num2
    elif operator == '*':
        result = num1 * num2
    elif operator == '/':
 
        result = num1 / num2 
 # +,-,*,/ পরিবর্তে অন্য অক্ষর দিলে শো করবে          
    else:
        print("Enter Valid Operator")
        exit(1)
#নাম্বারের পরিবর্তে অক্ষর দিলে শো করবে                   
except ValueError:
    print("Error: Invalid input. Please enter valid numbers.")
    exit(1)
```

<figure><img src="https://266499525-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtiINvXcTIgpEyOdCjrwk%2Fuploads%2FxQRoURM2Kv8kPzdJs9NV%2Fimage.png?alt=media&#x26;token=bd9930d0-6124-407f-b450-b1524c4fcd96" alt=""><figcaption></figcaption></figure>

আমি যদি ভাগ করার সময় ০ দেই তাহলে ভাগ করা সম্ভব না এই জাতীয় সমস্যা সমাধানের জন্য try... except ব্যবহার করতে হয়

```python

try:
    num1= float(input('Enter The First Number :'))
    num2 = float(input('Enter The Second Number :')) 
    operator = input("Enter an operator (+, -, *, /): ")
    
    if operator == '+':
            result = num1 + num2
    elif operator == '-':
        result = num1 - num2
    elif operator == '*':
        result = num1 * num2
    elif operator == '/':
        try:
            result = num1 / num2
        except ZeroDivisionError:
            print("Error: Division by zero is not allowed.")
            exit(1)       
    else:
        print("Enter Valid Operator")
        exit(1)
                  
except ValueError:
    print("Error: Invalid input. Please enter valid numbers.")
    exit(1)
```

<figure><img src="https://266499525-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtiINvXcTIgpEyOdCjrwk%2Fuploads%2F0QQw930i2kwJbmplufSr%2Fimage.png?alt=media&#x26;token=0541b11e-ab12-4581-816e-e605abec99d7" alt=""><figcaption></figcaption></figure>
