Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Handling Exceptions with When Clause in Catch
📖 Scenario: Imagine you are writing a program that processes user input numbers. Sometimes, the input might cause errors like division by zero or invalid format. You want to catch these errors but handle them differently based on the error details.
🎯 Goal: You will create a program that uses try-catch blocks with when clauses to catch exceptions only when certain conditions are met.
📋 What You'll Learn
Create a variable called numbers with the values 10, 0, and 5.
Create a variable called index and set it to 1.
Use a try block to divide 100 by the number at numbers[index].
Use a catch block with a when clause to catch DivideByZeroException only when the exception message contains the word zero.
Use another catch block with a when clause to catch IndexOutOfRangeException only when index is greater than 2.
Print the appropriate messages inside each catch block.
Print "Division result: {result}" if no exception occurs.
💡 Why This Matters
🌍 Real World
In real programs, you often need to handle errors carefully depending on the exact problem. Using <code>when</code> clauses helps you write cleaner and more precise error handling.
💼 Career
Understanding advanced exception handling is important for writing robust software that can handle unexpected situations gracefully, a key skill for software developers.
Progress0 / 4 steps
1
Create the initial data variables
Create a list of integers called numbers with the values 10, 0, and 5.
C Sharp (C#)
Hint
Use an array of integers with the exact values given.
2
Add the index variable
Create an integer variable called index and set it to 1.
C Sharp (C#)
Hint
Declare index as an integer and assign it the value 1.
3
Add try block with division
Add a try block that divides 100 by numbers[index] and stores the result in an integer variable called result.
C Sharp (C#)
Hint
Use a try block and perform the division inside it.
4
Add catch blocks with when clauses and output
Add a catch block for DivideByZeroException with a when clause that checks if ex.Message.Contains("zero"). Inside it, print "Cannot divide by zero!". Add another catch block for IndexOutOfRangeException with a when clause that checks if index > 2. Inside it, print "Index is out of range!". Finally, if no exception occurs, print "Division result: {result}".
C Sharp (C#)
Hint
Use catch (DivideByZeroException ex) when (ex.Message.Contains("zero")) and print the message. Use catch (IndexOutOfRangeException) when (index > 2) and print the other message. Print the result if no exception.
Practice
(1/5)
1.
What does the when clause do in a catch block in C#?
easy
A. It adds a condition to run the catch block only if the condition is true.
B. It defines a new exception type to catch.
C. It skips the catch block entirely.
D. It makes the catch block run before the try block.
Solution
Step 1: Understand the purpose of the when clause
The when clause adds a condition to a catch block.
Step 2: Effect of the when clause in exception handling
The catch block runs only if the condition after when is true, otherwise it skips.
Final Answer:
It adds a condition to run the catch block only if the condition is true. -> Option A
Quick Check:
when clause = conditional catch [OK]
Hint: when clause filters catch by condition [OK]
Common Mistakes:
Thinking when defines a new exception type
Assuming catch runs always regardless of when
Confusing when with finally block
2.
Which of the following is the correct syntax to use a when clause in a catch block?