论文部分内容阅读
摘 要:本文主要阐述Java自定义异常为消除错误,编写健壮代码,开发可靠的软件系统,提供重要保障,讨论如何编写自定义异常以及异常抛出、异常捕获、异常处理的规范和原则,并探讨在教学实施中的模式及经验效果。
关键词:异常类;自定义异常;抛出异常;捕获异常
中图分类号:TP307
在Java程序设计语言的基础教学中,异常处理作为独立的一部分知识体系存在。经过多年的教学研究,发现学生对异常这一部分的掌握程度仅限于对可能产生异常的语句进行捕获,而对异常内部的机制和自定义异常了解得很少,通常只是机械式的使用工具软件执行try-catch-finally语句,进而顺应编写代码的规范,确保程序能够继续执行下去。对于自定义异常部分,是绝大多数学习者的盲点。而学习自定义异常是学生掌握整个异常知识脉络的关键内容,学习它能够使异常更加灵活的在应用程序中扮演多变的角色。
1 为什么要出现自定义异常机制?
JAVA异常机制为使用者提供大量常用的系统异常,这些系统异常为通用的异常情况而设计,如文件异常,数组越界异常等等,学习和理解起来比较容易。而在实际的开发中,系统异常不可能在开发工作中面面俱到,总会有些特别的需求出现。如果在开发过程中遇到任何JAVA提供的异常类都不能描述的异常情况时,就需要自己对其定义。自定义异常就是为了在实际的软件开发应用中填补这种特殊的需要而设计。
另外,自定义异常与系统异常相比,相对控制性要更高,整体辨识度更高,与系统异常搭配使用,能够更充分的满足业务需求和系统需求。
2 自定义异常的作用
Java的异常是应对软件程序面临错误的重要解决方式,提供自定义异常能够更好的维护軟件程序,会在软件的测试以及调试阶段产生深远影响。若处理得当,程序将会在一定目标期许范围内平稳运行;若处理不当,程序中囊括的错误假设和不正确逻辑以及不可见的意外,在软件实际的运行中,将会造成无法估量的损失。
异常中出现的信息,对于维护程序的平稳运行意义重大。一般程序员对以下三方面的信息关注度较高:
2.1 异常的信息。异常发生时,大家都会习惯性的查看出现的异常提示信息是什么,根据提示信息,大概知道软件系统到底出现了大致什么样的问题,这对于那些解释错误信息的用户来说有着特别重要的意义。
2.2 发生异常的位置。自定义异常类用于区分异常发生的位置,当程序员遇到异常发生时,根据自定义异常名称就能够知道是哪里发生了异常,这类信息对程序员或者客户服务技术人员有着特别重要的意义,他们需要通过printStactTrace()提供的信息来分析错误,即可以根据自定义异常报告的提示信息对所开发的软件程序进行调试。
2.3 异常的类型。不论系统异常还是自定义异常,方法的调用者都需要关注异常的类型。比如divide方法的调用者,就应当特别的关注异常的类型,这决定着程序是否能够真正的继续运行下去得到正确的结果,或者程序似乎在运行但却什么结果都得不到。调用方法的语句可以通过捕获这类特殊的异常类型来对程序进行正确维护。
3 如何进行自定义异常的编写及应用
3.3 在出现异常方法的调用中捕获并处理异常。若是在当前抛出异常的方法中处理异常,可以用try-catch-finally语句捕获异常并处理所产生的异常;若不是,在方法的声明处通过关键字throws指明要抛出给方法调用的异常。
例如:当在一个try语句后面编写多个catch语句块的时候,如果发生的异常匹配第一个catch块中的参数定义格式,那么程序就将异常处理的权限交付第一个catch块语句;如果软件发生的异常无法与第一个catch块相匹配,那么程序将自动与第二个catch块语句相匹配,如果仍不匹配,程序将依次对后面的异常继续匹配下去;如果到最后依然无法匹配该异常,那么需要在方法的声明中添加throw语句,将该异常抛出。
另外,当try-catch语句中存在多个catch块时,如果每次处理的异常类具有继承关系的时候,应该首先捕获子类发生的异常,再处理父类发生的异常,所以在代码的编写顺序上,最好将处理子类的catch语句放在前面,而处理父类的catch语句放在后面。finally语句,则表明无论是否发生异常,都将执行这条语句,可以根据实际需要考虑是否需要添加finally语句。
3.4 编写自定义异常类应注意的问题。当程序抛出一个异常的时候,必须选择合适的异常类型,以便方法的调用者可以根据异常的类型做出正确的处理,必须设置有意义的异常信息,以便看到异常或日志记录的用户能明白发生了什么事;必须让StactTrace反映出异常发生的最原始的位置信息。程序员应该站在方法调用者的立场去考虑这个问题,而不是站在书写这个方法的开发者的立场,考虑到方法的调用者接收到这个异常的时候,能够做些什么,是否能够根据不同的异常类型,从而做出不同的处理,如果答案是否定的,那么书写throw子句的程序员应当在方法中自行处理该异常,或者改为它对调用者更为有意义的异常。
4 自定义异常的教学实施
在教学中,“兴趣是最好的老师”表明乐学是教学成功的最高境界。自定义异常这部分内容在教学开展中可以从提升学生的学习兴趣入手。在学习系统提供异常类之后,给出一个较大的任务,为学生制造多种异常情况的发生,使学生捕获异常。在这个过程中,引入自定义异常的知识内容,介绍为什么需要自定义异常及其作用、使用方法、注意事项等等。通过为学生制造困难,引领学生提升学习兴趣,愿意接受学习路上的挑战,教师在课前的准备工作必须细致又充分。
例如,把学生划分为几个小组,将整个任务模拟成游戏闯关模式,最终每个异常任务的提交结果,设置成为通过/不通过,每名学生都需要提交任务,根据提交任务情况使学生获得相应的智慧豆和经验值,并在每个阶段不停滚动播放当前的实时排名等手段,对学生都将产生一种正面的激励作用。同时,对小组晋级进行严格等级划分,使组内成员充分体验一荣俱荣,一损俱损,学习认识团队合作的重要性,更利于学生的素质培养。
总而言之,自定义异常为程序员对软件的维护提供了有利的保障,学生掌握自定义异常内部机制和使用方法是成为优秀的软件开发人员的必要条件。教师应结合自己所处的实际教学情况,结合课程改革的精神,在教学研究中探讨新的教学思路,寻找新的教学方法教学手段,使学生在趣味的探究任务中不短克服困难,努力完成任务,通过解决问题来完成新的知识体系的学习、能力的提升及科学素质的培养。
参考文献:
[1]贾振华.Java语言程序设计[M].北京:中国水利水电出版社,2004.
[2]朱福喜.Java语言程序设计[M].北京:清华大学出版社,2005.
关键词:异常类;自定义异常;抛出异常;捕获异常
中图分类号:TP307
在Java程序设计语言的基础教学中,异常处理作为独立的一部分知识体系存在。经过多年的教学研究,发现学生对异常这一部分的掌握程度仅限于对可能产生异常的语句进行捕获,而对异常内部的机制和自定义异常了解得很少,通常只是机械式的使用工具软件执行try-catch-finally语句,进而顺应编写代码的规范,确保程序能够继续执行下去。对于自定义异常部分,是绝大多数学习者的盲点。而学习自定义异常是学生掌握整个异常知识脉络的关键内容,学习它能够使异常更加灵活的在应用程序中扮演多变的角色。
1 为什么要出现自定义异常机制?
JAVA异常机制为使用者提供大量常用的系统异常,这些系统异常为通用的异常情况而设计,如文件异常,数组越界异常等等,学习和理解起来比较容易。而在实际的开发中,系统异常不可能在开发工作中面面俱到,总会有些特别的需求出现。如果在开发过程中遇到任何JAVA提供的异常类都不能描述的异常情况时,就需要自己对其定义。自定义异常就是为了在实际的软件开发应用中填补这种特殊的需要而设计。
另外,自定义异常与系统异常相比,相对控制性要更高,整体辨识度更高,与系统异常搭配使用,能够更充分的满足业务需求和系统需求。
2 自定义异常的作用
Java的异常是应对软件程序面临错误的重要解决方式,提供自定义异常能够更好的维护軟件程序,会在软件的测试以及调试阶段产生深远影响。若处理得当,程序将会在一定目标期许范围内平稳运行;若处理不当,程序中囊括的错误假设和不正确逻辑以及不可见的意外,在软件实际的运行中,将会造成无法估量的损失。
异常中出现的信息,对于维护程序的平稳运行意义重大。一般程序员对以下三方面的信息关注度较高:
2.1 异常的信息。异常发生时,大家都会习惯性的查看出现的异常提示信息是什么,根据提示信息,大概知道软件系统到底出现了大致什么样的问题,这对于那些解释错误信息的用户来说有着特别重要的意义。
2.2 发生异常的位置。自定义异常类用于区分异常发生的位置,当程序员遇到异常发生时,根据自定义异常名称就能够知道是哪里发生了异常,这类信息对程序员或者客户服务技术人员有着特别重要的意义,他们需要通过printStactTrace()提供的信息来分析错误,即可以根据自定义异常报告的提示信息对所开发的软件程序进行调试。
2.3 异常的类型。不论系统异常还是自定义异常,方法的调用者都需要关注异常的类型。比如divide方法的调用者,就应当特别的关注异常的类型,这决定着程序是否能够真正的继续运行下去得到正确的结果,或者程序似乎在运行但却什么结果都得不到。调用方法的语句可以通过捕获这类特殊的异常类型来对程序进行正确维护。
3 如何进行自定义异常的编写及应用
3.3 在出现异常方法的调用中捕获并处理异常。若是在当前抛出异常的方法中处理异常,可以用try-catch-finally语句捕获异常并处理所产生的异常;若不是,在方法的声明处通过关键字throws指明要抛出给方法调用的异常。
例如:当在一个try语句后面编写多个catch语句块的时候,如果发生的异常匹配第一个catch块中的参数定义格式,那么程序就将异常处理的权限交付第一个catch块语句;如果软件发生的异常无法与第一个catch块相匹配,那么程序将自动与第二个catch块语句相匹配,如果仍不匹配,程序将依次对后面的异常继续匹配下去;如果到最后依然无法匹配该异常,那么需要在方法的声明中添加throw语句,将该异常抛出。
另外,当try-catch语句中存在多个catch块时,如果每次处理的异常类具有继承关系的时候,应该首先捕获子类发生的异常,再处理父类发生的异常,所以在代码的编写顺序上,最好将处理子类的catch语句放在前面,而处理父类的catch语句放在后面。finally语句,则表明无论是否发生异常,都将执行这条语句,可以根据实际需要考虑是否需要添加finally语句。
3.4 编写自定义异常类应注意的问题。当程序抛出一个异常的时候,必须选择合适的异常类型,以便方法的调用者可以根据异常的类型做出正确的处理,必须设置有意义的异常信息,以便看到异常或日志记录的用户能明白发生了什么事;必须让StactTrace反映出异常发生的最原始的位置信息。程序员应该站在方法调用者的立场去考虑这个问题,而不是站在书写这个方法的开发者的立场,考虑到方法的调用者接收到这个异常的时候,能够做些什么,是否能够根据不同的异常类型,从而做出不同的处理,如果答案是否定的,那么书写throw子句的程序员应当在方法中自行处理该异常,或者改为它对调用者更为有意义的异常。
4 自定义异常的教学实施
在教学中,“兴趣是最好的老师”表明乐学是教学成功的最高境界。自定义异常这部分内容在教学开展中可以从提升学生的学习兴趣入手。在学习系统提供异常类之后,给出一个较大的任务,为学生制造多种异常情况的发生,使学生捕获异常。在这个过程中,引入自定义异常的知识内容,介绍为什么需要自定义异常及其作用、使用方法、注意事项等等。通过为学生制造困难,引领学生提升学习兴趣,愿意接受学习路上的挑战,教师在课前的准备工作必须细致又充分。
例如,把学生划分为几个小组,将整个任务模拟成游戏闯关模式,最终每个异常任务的提交结果,设置成为通过/不通过,每名学生都需要提交任务,根据提交任务情况使学生获得相应的智慧豆和经验值,并在每个阶段不停滚动播放当前的实时排名等手段,对学生都将产生一种正面的激励作用。同时,对小组晋级进行严格等级划分,使组内成员充分体验一荣俱荣,一损俱损,学习认识团队合作的重要性,更利于学生的素质培养。
总而言之,自定义异常为程序员对软件的维护提供了有利的保障,学生掌握自定义异常内部机制和使用方法是成为优秀的软件开发人员的必要条件。教师应结合自己所处的实际教学情况,结合课程改革的精神,在教学研究中探讨新的教学思路,寻找新的教学方法教学手段,使学生在趣味的探究任务中不短克服困难,努力完成任务,通过解决问题来完成新的知识体系的学习、能力的提升及科学素质的培养。
参考文献:
[1]贾振华.Java语言程序设计[M].北京:中国水利水电出版社,2004.
[2]朱福喜.Java语言程序设计[M].北京:清华大学出版社,2005.