PLEASE CODE IN C# NOT in Java
EXCEPTION HANDLING Concept Summary:
Use of try... catch in a program
Define an exception class and call it from the driver program.
For this lab you will complete two parts.
Part (a) of the lab implements try... catch and uses an existing
exception in C#. Write a program that implements an
ArrayIndexOutOfBounds error.
Part (b) writes a program that converts a time from 24-hour
notation to 12-hour notation. Assume the user will enter the time
as a 4-digit number with no colon.
Submission Guidelines:
You will turn in 3 program files.
Part (a) has one program file
Part (b) requires two program files. (Note: C# Students can turn in
one program file)
Specifications:
Part (a):
Write a program in C# that declares an array of 5 elements and displays the contents of the array. Your program should attempt to access the 6th element in the array (which does not exist) and using try.. catch your program should prevent the run-time error and display your error message to the user. Sample output including error message is provided below.
SAMPLE OUTPUT:
Part (a)
Printing an element out of bounds 5
7
11
3
0
You went out of limits in the array
Part (b):
Define an exception class called InvalidTimeFormatException. If the user enters an invalid time like 1065 or 2515, the program should throw and handle an InvalidTimeFormatException.
NOTE: Assume the user will enter the time as a 4-digit number with no colon.
SAMPLE OUTPUT:
Part (b)
Enter time in 24-hour notation:
1614
That is the same as 4:14 PM
Again? (y/n)
y
Enter time in 24-hour notation:
0245
That is the same as 2:45 AM
Again? (y/n)
y
Enter time in 24-hour notation:
1215
That is the same as 12:15 PM
Again? (y/n)
y
Enter time in 24-hour notation:
2612
Error: Hour can only be between 0 and 23
Again? (y/n)
y
Enter time in 24-hour notation:
1562
Error: Minutes can only be between 0 and 59 Again? (y/n)
n
// IndexOutOfBoundsDemo.cpp
export module snippet;
import <string>;
import <vector>;
import <iostream>;
import <stdexcept>;
export class IndexOutOfBoundsDemo
{
static void main(std::vector<std::wstring> &args)
{
// create an array of 5 integers
std::vector<int> arr = {5, 7, 11, 3, 0};
std::wcout << L"Printing an element out of bounds" << std::endl;
// loop 6 times to try display an element at index beyond the array
for (int i = 0;i < 6;i++)
{
try
{
std::wcout << arr[i] << std::endl;
}
catch (const std::out_of_range &e)
{
// this is executed when we try to access an element at index which is beyond the size of the array
std::wcout << L"You went out of limits in the array." << std::endl;
}
}
}
};
//end of IndexOutOfBoundsDemo.cpp
OUTPUT:
// InvalidTimeFormatException.cpp
export module snippet;
import <string>;
import <vector>;
import <iostream>;
import <stdexcept>;
export class InvalidTimeFormatException : public std::runtime_error
{
// constructor that takes as input the exception message
public:
InvalidTimeFormatException(const std::wstring &msg) : Exception(msg) // calls Exception constructor passing the message
{
}
};
//end of InvalidTimeFormatException.cpp
// InvalidTimeExceptionDemo.cpp
export class InvalidTimeExceptionDemo
{
static void main(std::vector<std::wstring> &args)
{
std::wstring choice;
int time24, hour, minute;
std::wstring tz;
Scanner *sc = new Scanner(System::in);
// loop that continues till the user wants
do
{
// input the time in 24 hour format as 4-digit number with no colon.
std::wcout << L"Enter time in 24-hour notation: " << std::endl;
time24 = sc->nextInt();
// extract the hour and minute from the input
hour = time24 / 100;
minute = time24 % 100;
try
{
// invalid hour
if (hour < 0 || hour > 23)
{
delete sc;
throw InvalidTimeFormatException(L"Error: Hour can only be between 0 and 23");
}
else if (minute < 0 || minute > 59) // invalid minute
{
delete sc;
throw InvalidTimeFormatException(L"Error: Minutes can only be between 0 and 59");
}
else
{
// valid time, convert it to 12-hour format
if (hour >= 0 && hour < 12)
{
tz = L"AM";
if (hour == 0)
{
hour = 12;
}
}
else
{
tz = L"PM";
if (hour > 12)
{
hour = hour - 12;
}
}
// display the time in 12-hour format
std::wcout << L"That is the same as " << hour << L":" << minute << L" " << tz << std::endl;
}
}
catch (const InvalidTimeFormatException &e)
{
// executed when user entered time is invalid (hour/ minute)
std::wcout << e->what() << std::endl;
}
// ask if the user wants to input again
std::wcout << L"Again? (y/n) " << std::endl;
choice = sc->next();
}while (choice.equalsIgnoreCase(L"y"));
delete sc;
}
};
//end of InvalidTimeExceptionDemo.cpp
OUTPUT:
THUMBS UP IF YOU LIKE IT !
Get Answers For Free
Most questions answered within 1 hours.