欢迎来到天天文库
浏览记录
ID:39384522
大小:518.00 KB
页数:26页
时间:2019-07-02
《常见错误和异常处理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第六章常见错误和异常处理成都东软信息技术学院计算机系季建华BeyondTechnologyB313Email:jijianhua@ccniit.com第6章常见错误和异常处理开发应用程序时出现错误是不可避免的。对待程序中出现错误的正确态度:尽可能的少有错误;不要恐慌,不要掩盖错误。程序运行过程中出现的常见的错误类型。学习调试的方法。学习异常处理是为了让可能的错误发生在控制中。6.1常见的错误了解常见的错误是为了避免这些错误。常见的错误有:编译时出现错误、运行时期发生的错误、运行后发现的错误,即发现程序运行结果不合要求。6.1.1编译错误Java语言初学者常犯的错误:大小写形式混淆使用未
2、定义的变量使用未初始化的变量数据类型与变量类型不符语句后遗漏了分号小括号不配对养成良好的编程习惯,借助开发工具可以减少编译错误。6.1.2运行错误程序运行时可能因为各种错误而运行中断。除数为零数组下标越界数组下标越界inta[]=newint[10];for(inti=1;i<=10;i++)system.out.println(a[i]);6.1.3逻辑错误这类错误合乎语法程序运行后没有得到预期的效果1,超出数据类型的数值范围2,将“==”写成了“=”3,大括号问题最好在任何情况下都使用大括号将语句体括起来intsum=0;inti=1;While(i<=100)sum=+i;i++
3、;6.2异常处理用户期望程序可以聪明地处理所出现的错误,比如:返回到一个安全的状态并且允许用户执行其它程序。程序出现错误后你的程序起码可以应该:通知用户程序出现了一个错误保存全部工作允许用户安全地退出程序6.2.1什么是异常处理什么是异常?异常实际上是程序中错误导致中断了正常的指令流的一种事件.没有处理错误的程序:readFile{openthefile;determineitssize;allocatethatmuchmemory;readthefileintomemory;closethefile;}errorCodeTypereadFile{//以常规方法处理错误initiali
4、zeerrorCode=0;openthefile;if(theFileIsOpen){determinethelengthofthefile;if(gotTheFileLength){allocatethatmuchmemory;if(gotEnoughMemory){readthefileintomemory;if(readFailed){errorCode=-1;}}else{errorCode=-2;}}else{errorCode=-3;}closethefile;if(theFileDidntClose&&errorCode==0){errorCode=-4;}else{e
5、rrorCode=errorCodeand-4;}}else{errorCode=-5;}returnerrorCode;}观察前面的程序你会发现大部分精力花在出错处理上了.只把能够想到的错误考虑到,对以外的情况无法处理程序可读性差出错返回信息量太少用Java中的异常机制处理错误try{openthefile;determineitssize;allocatethatmuchmemory;readthefileintomemory;closethefile;}catch(fileopenFailed){dosomething;}catch(sizeDetermineFailed){do
6、something;}catch(memoryAllocateFailed){dosomething;}catch(readFailed){dosomething;}catch(fileCloseFailed){dosomething;}和传统的方法比较异常的优点:1.把错误代码从常规代码中分离出来,提高了可读性2.把错误传播给调用堆栈3.按错误类型和错误差别分组,可以利用类的层次性统一处理或分别处理异常。4.系统提供了对于一些无法预测的错误的捕获和处理5.克服了传统方法的错误信息有限的问题method1method2method3method4产生异常传递处理异常6.2.2Excep
7、tion类Java语言每一种Exception类都对应一种特定的运行错误。熟悉常见的已定义的系统异常。用户可以自定义异常来处理用户程序中特定的逻辑运行错误6.2.3异常处理的过程try{//接受监视的程序块,在此区域内发生//的异常,由catch中指定的程序处理;}catch(要处理的异常种类和标识符){//处理异常;}catch(要处理的异常种类和标识符){//处理异常;}通常将较具体和较常见的异常的处理放在前面。一定会执行的程序块---fi
此文档下载收益归作者所有