- 1、本文档共68页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.6.2 异常处理 1.try语句 将有可能发生异常的代码作为try语句块,将try语句中出现异常的代码放到catch语句块。finally??语句块是不论?try?语句中有没有异常发生,都要执行的程序块。 【例3.26】 try-catch-finally语句块示例。 程序运行结果如图3.35所示。 3.6.2 异常处理 finally语句块包含了一定要执行的代码,通常是资源释放、关闭文件等代码。 【例3.27】 多catch语句示例。 程序运行结果如图3.36所示。 3.6.2 异常处理 2.throw语句 throw语句用法: throw expression throw?语句抛出的异常表达式expression?必须表示一个?System.Exception?类型或它的派生类。throw语句后也可以没有expression表达式,表示将异常再次抛出。 【例3.28】 throw语句抛出异常。 程序运行结果如图3.37所示。 3.6.2 异常处理 throw?语句重新抛出一个新的异常?Arithmetic Exception,然后由Main()中的catch语句捕获。 【例3.29】 throw语句异常再次抛出。 throw?语句将?Div()方法中的?DivideByZeroException再次抛出,由?Main()中的?catch?语句捕获它。程序运行结果如图3.38所示。 【例3.30】 异常处理综合举例。 如果输入数不在0~5之间,将引发IndexOutOfRangeException异常,由第一个catch语句捕获。比如在运行程序时输入6,结果如图3.39所示。 3.7 C#综合应用实例 【例3.31】 学生成绩管理程序。根据学生选修的课程及课程学分和课程成绩计算GPA,最后按GPA的值对学生进行排序。 基本思路:本程序的学生总人数、课程名、课程学分可以由控制台输入,为叙述简单,假定每个学生所选修的课程相同。 Course?类定义课程名、课程学分字段域,并使用属性公开私有字段。另外,Course?类还定义了Name属性、构造函数。 Course类代码所示。 3.7 C#综合应用实例 Student类定义学生姓名、学号、选修课程数、Course类、成绩及GPA等字段,并使属性公开(public)。假定选修课程一样,将课程数、Course?类对象定义为?static?字段,不需要每个学生都有这份数据副本。 Student类还定义了?CourseNum?静态属性、GPA?属性、Name?属性。定义?SetCourse?方法,用于设置课程名,因为不需要为每个学生设置,所以定义成静态方法。定义?AddData?方法,用于加入姓名、学号、成绩。定义?ComputeGPA?方法,计算学生成绩的?GPA。定义?stuSwap?方法,对两个Student对象内容进行交换。 Student类的代码所示。 3.7 C#综合应用实例 Test?类中的?MaxMinGPA?方法用于求最大和最小?GPA?值,SortGPA?方法用于按学生的GPA值对Student类对象数组进行排序。 Test类代码所示。 程序运行结果如图3.40所示。 3.3.4 抽象类与抽象方法 如果类的方法声明包含?sealed?修饰符,称该方法为密封方法。类的实例方法声明包含 sealed?修饰符,则必须同时使用?override?修饰符。使用密封方法可以防止派生类进一步重写该方法。如果将圆形?Circle?类的?GetArea?方法定义为密封类,必须先将Shape类的GetArea方法定义为: public virtual double GetArea() { // TODO… } ? 然后在Circle类中实现密封方法: public sealed override double GetArea() { // TODO… } 3.4 C#系统的类型转换、 3.4.1 复合数据类型 1.结构 C#中的结构除了包含数据成员外,还有构造函数、方法、属性、事件、索引等成员,结构也可以实现多个接口。 【例3.13】 结构示例。 程序中的s2获得了s1的一份数据副本,虽然s1.x的值改变了,但并没有影响到s2。执行程序,结果如图3.20所示。 3.4.1 复合数据类型 (1)首先,结构是值类型,而类是引用类型。当两个类的实例相等时,表示它们指向同一段内存地址,改变一个类必然要影响到另一个类。比如【例3.13】中,将定义结构的语句: // 定义结构MyStruct struct MyStruct { … } …… 修改为: // 定义类MyStruct class MyStruct { … } …… 其余代码完全
您可能关注的文档
- 表现性评价在写作教学中应用_张红冰.pdf
- 基于三产互动及城乡统筹的区域经济空间分析.pdf
- 固定膜界面萃取研究.pdf
- 使用telnet协议来收发邮件(SMTP与POP3).doc
- 传统手工艺文化现代表述_以黔东南苗族银饰锻制手工艺为例.pdf
- 第二节 通用压力机-概述.ppt
- 第三方支付的法律风险和其防范机制构建.pdf
- 第五节 关系数据库理论.ppt
- ADC与DAC的工作过程分析.doc
- 面向对象的编程技术 对象与属性等.ppt
- 基于大数据的AI医疗影像诊断2025年临床应用效果与影像医学学科建设研究报告.docx
- 2023年广东揭阳揭西县园区建设投资有限公司公开招聘工作人员5人笔试参考题库附带答案详解.doc
- 基于大数据的远程医疗服务平台用户体验优化策略研究报告.docx
- 2024年新高一数学暑假提升讲义(人教B版必修第一册):集合的基本关系(解析版).pdf
- 基于大数据的金融营销策略优化与效果评估报告(2025年).docx
- 基于客户需求的2025年家电售后服务创新模式报告.docx
- 基于学生需求的高中体育选项走班制课程改革研究论文.docx
- 基于物联网技术的2025年中国安防监控行业智能化应用案例分析报告.docx
- 基于物联网的2025年供应链协同管理平台应用创新研究报告.docx
- 基于教育大数据的智能教育决策支持系统研究报告.docx
文档评论(0)