实验十 异常处理

本文通过三个具体的实验案例,深入探讨了C++异常处理机制,包括文件打开异常处理、自定义异常类及时间格式错误异常处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验目的和要求

1.正确理解C++的异常处理机制。

2.学习异常处理的声明和执行过程。

实验内容

1.下面是一个文件打不开的异常处理程序,分析程序并完成相应问题。

  1. //sy10_1.cpp
  2. #include <fstream>
  3. #include <iostream>
  4. using namespace std;
  5. int main()
  6. {
  7. ifstream source("myfile.txt");
  8. char line[ 128];
  9. try{
  10. if(!source)
  11. throw "myfile.txt";
  12. }
  13. catch( char *s)
  14. {
  15. cout<< "error opening the file"<<s<< endl;
  16. exit( 1);
  17. }
  18. while(!source.eof()){
  19. source.getline(line, sizeof(line));
  20. cout<<line<< endl;
  21. }
  22. source.close();
  23. return 0;
  24. }
(1)若磁盘中没有myfile.txt文件,则输出结果如何?

(2)在硬盘上建一个myfile.txt文件,其文件内容自己定义。输出结果如何?

2、声明一个异常类Cexception,有成员函数what(),用来显示异常的类型,在子函数中触发异常,在主程序中处理异常。(sy10_2.cpp)

3、写一个程序(sy10_3.cpp),将24小时格式的时间转换成12小时格式。下面是一个示范的对话:

Enter time in 24-hour notation :
13:07
That is the same as:
1:07 PM
Do you want to try a new case?(y/n)
Y
Enter time in 24-hour notation :
10:15
That is the same as:
10:15 AM
Do you want to try a new case?(y/n)
Y
Enter time in 24-hour notation :
10:65
There is no such a time as 10:65
Enter another time :
Enter time in 24-hour notation :
16:05
That is the same as:
16:05 PM
Do you want to try a new case?(y/n)
N
End of program.
定义一个名为 TimeFormatMistake 的异常类。如果用户输入非法时间,比如10:65,或者输入一些垃圾字符,比如6&*65,程序就抛出并捕捉一个 TimeFormatMistake 异常。
分析与讨论
 1、结合实验内容中第1题,分析抛出异常和处理异常的执行过程。
2、结合实验内容中第2题,说明异常处理的机制。
3、结合实验内容中第2题和第3题,说明异常类的作用。


【优快云学院】Web全栈工程师最新攻略!
你是组件开发学不会?框架核心学不会?小程序开发学不会?别犹豫了,看看我是怎么帮你学会的!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值