Write a new statement in the try block which may throw the exception of length_e
ID: 3691800 • Letter: W
Question
Write a new statement in the try block which may throw the exception of length_error. Test the statement.
Submission guide:
Upload a program and a screenshot with your explanation about the output.
--
// Handling out_of_range and length_error exceptions.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string sentence; //Line 1
string str1, str2, str3; //Line 2
try //Line 3
{
sentence = "Testing"; //Line 4
cout << "Line 5: sentence = " << sentence
<< endl; //Line 5
cout << "Line 6: sentence.length() = "
<< static_cast<int>(sentence.length())
<< endl; //Line 6
str1 = sentence.substr(8, 20); //Line 7
cout << "Line 8: str1 = " << str1
<< endl; //Line 8
str2 = sentence.substr(28, 10); //Line 9
cout << "Line 10: str2 = " << str2
<< endl; //Line 10
str3 = "Exception handling. " + sentence; //Line 11
cout << "Line 12: str3 = " << str3
<< endl; //Line 12
}
catch (out_of_range re) //Line 13
{
cout << "Line 14: In the out_of_range "
<< "catch block: " << re.what()
<< endl; //Line 14
}
catch (length_error le) //Line 15
{
cout << "Line 16: In the length_error "
<< "catch block: " << le.what()
<< endl; //Line 16
}
return 0; //Line 17
}
Explanation / Answer
Solution.cpp
//only error is length error and that is handled by length_error exceptin
#include <iostream>//input output function header file
#include <string>//this header file handle string functions
using namespace std;//it teells the cmpiler ti link std std namespace
int main()
{//main function
string sentence; //Line 1
string str1, str2, str3; //Line 2
const unsigned desired_length(26);//allocation length of the string 26
try //Line 3
{
sentence = "Testing string exceptions!"; //Line 4
cout << "Line 5: sentence = " << sentence
<< endl; //Line 5
cout << "Line 6: sentence.length() = "
<< static_cast<int>(sentence.length())// length of the string
<< endl; //Line 6
str1 = sentence.substr(8, 20); //Line 7//this function retrives part f the string
cout << "Line 8: str1 = " << str1
<< endl; //Line 8
str2 = sentence.substr(8, 10); //Line 9//8 after 8 position to 10 character it prints
cout << "Line 10: str2 = " << str2
<< endl; //Line 10
str3 = "Exception handling. " + sentence; //Line 11
cout << "Line 12: str3 = " << str3
<< endl; //Line 12
str1.resize(str1.max_size() + 1, ' ');//exception occurs at this statement because maxsize+1 we cannot add length to maxsize
}catch (out_of_range re) //Line 13
{
cout << "Line 14: In the out_of_range "//this statement will not called because error occurs is lenth_error
<< "catch block: " << re.what()
<< endl; //Line 14
}
catch (length_error& le) //Line 15
{
cout << "Line 16: In the length_error "//this statement will calls
<< "catch block: " << le.what()
<< endl; //Line 16
}
return 0; //Line 17
}
output
sh-4.3$ main
Line 5: sentence = Testing string exceptions!
Line 6: sentence.length() = 26
Line 8: str1 = string exceptions!
Line 10: str2 = string exc
Line 12: str3 = Exception handling. Testing string exceptions!
Line 16: In the length_error catch block: basic_string::_M_replace_aux
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.