- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Object Oriented Programming
CHAP14
Smart Pointer
浙江大学《C++程序设计》
Exception specifications
• Declare which exceptions function might raise
• Part of function prototypes
void abc (int a) : throw(MathErr) {
...
}
• Not checked at compile time
• At run time,
– if an exception not in the list propagates out,
the unexpected exception is raised
/55
Failure in constructors:
• No return value is possible
• Use an “uninitialized flag”
• Defer work to an Init() function
Better: Throw an exception
/55
Failure in constructors...
If you constructor can’t complete, throw an
exception.
• Dtors for objects whose ctor didn’t complete
won’t be called.
• Clean up allocated resources before
throwing.
/55
Two stages construction
• Do normal work in ctor
– Initialize all member objects
– Initialize all primitive members
– Initialize all pointers to 0
– NEVER request any resource
• File
• Network connection
• Memory
• Do addition initialization work in Init()
/55
Exceptions and destructors
Destructors are called when:
• Normal call: object exits from scope
• During exceptions: stack unwinding invokes
dtors on objects as scope is exited.
What happens if an exception is thrown in a
destructor?
/55
Exceptions and destructors...
Throwing an exception in a destructor that is
itself being called as the result of an
exception will invoke std::terminate().
• Allowing exceptions to escape from
destructors should be avoided.
/55
Programming with exceptions
Prefer catching exc
您可能关注的文档
- 武汉大学《微机原理与接口技术》课件-第1章绪论.ppt
- 武汉大学《微机原理与接口技术》课件-第6章存贮器.ppt
- 武汉大学《微机原理与接口技术》课件-第4章宏汇编语言程序设计.ppt
- 武汉大学《微机原理与接口技术》课件-第7章IO接口和总线.ppt
- 武汉大学《微机原理与接口技术》课件-第12章ADA.ppt
- 武汉大学《微机原理与接口技术》课件-第5章程序设计方法.ppt
- 浙江大学《C++程序设计》课件-chapter15 Streams.pdf
- 浙江大学《C++程序设计》课件-chapter13 Exceptions.pdf
- 浙江大学《C++程序设计》课件-chapter8 Overloaded Operators.pdf
- 浙江大学《C++程序设计》课件-chapter6 Template and STL.pdf
- 幼儿教师资格证(考试资料)《幼儿保健知识与能力》新版初级练习卷有答案与.docx
- (附答案)川农12月《中药化学》作业考核-.docx
- (附答案)川农12月《园林植物保护学(本科)》作业考核-.docx
- (附答案)川农12月《有机化学(专科)》作业考核-.docx
- (附答案)川农12月《植物保护学(本科)》作业考核-.docx
- (附答案)东师《教育心理学》在线作业2-1(1).docx
- (附答案)川农12月《药剂学》作业考核-.docx
- (附答案)川农12月《配方饲料制造工艺与技术(专科)》作业考核-.docx
- 幼儿教师资格证(考试资料)《幼儿保健知识与能力》新版基础知识题库带解析.docx
- 幼儿教师资格证(考试资料)《幼儿保健知识与能力》基础知识模拟押题卷.docx
文档评论(0)