欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    java程序错误类型及异常处理.docx

    • 资源ID:1463545       资源大小:28.87KB        全文页数:25页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    java程序错误类型及异常处理.docx

    一、程序的错误类型在程序设计中,无论规模是大是小,错误总是难免的。程序的设计很少有能够一次完成,没方错误的(不是指HelIOWorki这样的程序,而是要实现确定的功能,具备确定好用价值的程序),在编程的过程中由于种种缘由,总会出现这样或那样的错误,这些程序的错误就是我们常说的“Bug”,而检测并修正这些错误的方法就是“DebugW(调试)。必本上全部的集成开发环境都供应了强大的和程序调试功能,在程序进行编译,连接,运行时,会对程序中错误进行诊断C程序的错误可以抽象分为三类:语法错误、运行错误和逻辑错误.1、语法借误是指由于编程中输入不符合语法规则而产生的。程序儡译&t不过,程序不能运行起来。此类情误,傅洁,词就起来比较倚洁例如:表达式不完整、缺少必要的标点符号、关键字输入错误、数据类型不匹配、循环语句或选择语句的关键字不匹配等。通常,编译器对程序进行编译的过程中,会把检测到的语法错误以提示的方式列举出来,又称为编译错误。语法错误的调试,则可以由集成开发环境供应的调试功能来实现,在程序进行编译时,编译器会对程序中的语法错误进行诊断。编译诊断的语法错误分为3中:致命错误、错误和警告。(1)致命错误:这个错误大多是编译程序内部发生的错误,发生这类错误时,编译被迫中止,只能取新启动编译程序,但是这类错误很少发生,为了平安,编译前最好还是先保存程序。(2)错误:这个错误通常是在编译时,语法不当所引起的。例如:括号不匹配,变地未声明等。产生这类错误时,编译程序会出现报错提示,我们依据提示对源程序进行修改即可。这类错误是出现最多的。(3)警告:是指被编译程序怀疑有错,但是不确定,存时可强行通过。例如:没有加void声明的主函数没有返回值,double数据被转换为float类型等。这些瞥告中花些会导致错误,有些可以通过。相规解决方法:此类错误般程序编译系统会自动提示相应的错误地点和错误缘由,比如哪一行代码少了个括号等诸如此类的提示,常见的错误,看懂干脆改正即可,假如是看不懂缘由,可以耨错误提示信息输入搜d引擎杳找一下,一般都能找到具体的解决方法。或者有些编程平台会本身供应个本地或者在线的信息库,供应具体的错误缘由和解决方法,比如微软的.NET开发平台。2、运行倩旗指程序在运行过程中出现的错误。程序通过语谢t误检测,但是运行的时候出现储谀,导致程序被通终止,此类借误有特定的发生条件,因此能够精确的定位借误代潜段,因而说试也比较便利例如:除法运算时除数为。、数组下标越界、文件打不开、做盘空间不够、数据库连接错误等。此类错误发生时,编译平台一般也会提示相应的信息,对于常规的错误会有比较精确地提示,但.有时提示的错误缘由会比较模糊,但因为此类错误一般在程序运行时,只在特定的条件下才会发生,所以依据错误发生的条件,能够大致推断程序出错的代码段,结合错误的缘由,也能比较便利的调试出错误。3、逻辑懵误程序运行后,没方得到设计者预期的结果,这就说明程序存在逻辑错误。这种错误在语法上是有效的,但是在逻辑上是错误的C程序运行了,也没有出借,但是执行出来的结果不是用户想要的,分为两种伏况:A、能够看出借误:比如查诲工贵大于5000的人员名单,却出现了3000的;反者不出借误,直到因缘际会发觉程序确定出借了,后果侵产侵:比如进行一个符合大型运算,把某个窃蜡人借了,最终的结果人工无法推断对储,又以该结果进行其它的运算等等,量终发觉借了误差过大,就得从头持IHt误e例如:运用r不正确的变盘,指令的次序错误,循环的条件不正确,程序设计的算法考虑不周全等C通常,逻辑错误也会附带产生运行错误。在一般状况下,编译器在编译程序时,不能检测到程序中的逻辑错误,也不会产生逻辑错误的提示,因此逻辑错误比较难解除,须要程序员细致的分析程序,并借助集成开发环境供应的调试工具,才能找到出借的缘由,并解除错误。二、java的异样处理(错误处理)程序的错误就是通常的异样,也叫Exception.对于语法错误,java编译系统在编就能发觉检行出错误。对干逻辑错误,编译系统是无法发觉错误的,错误须要人为去发觉解除错误。对于运行错误,Java语言中代表异样时,运用个特地的类来代表种特定的异样状况,在系统中传递的异样状况就是该类的对象,全部代表异样的类蛆成的体系就是Java语言中的异样类体系。】、java异样类Java的异样是一个对象,全部的异样都干脆或间接地继承ThroWabIe类。Throwable类的继承层次结构如下:JavaAPI中,声明白儿百个EXCePtiOn的子类分别来代表各种各样的常见异样状况,这些类依据须要代表的状况位于不同的包中,这些类的类名均以EXCCPtion作为类名的后缀。假如遇到的异样状况,JaVaAPI中没有对应的异样类进行代表,也可以声明新的异样类来代表特定的状况。在这些异样类中,依据是否是程序自身导致的异样,将全部的异样类分为两种:a) RuntimeException与其全部子类该类异样属于程序运行时异样,也就是由于程序自身的问题导致产生的异样,例如数组卜.标越界异样ArraylndexoutofBoundsException等。该类异样在语法上不强制程序员必需处理,即使不处理这样的异样也不会出现语法错误。b) 其它Exception子类该类异样属于程序外部的问题引起的异样,也就是由于程序运行时某些外部问题导致产生的异样,例如文件不存在异样等。该类异样在语法上强制程序员必需进行处理,假如不进行处理则会出现语法错误。熟识异样类的分类,将有助于后续语法中的处理,也使得在运用异样类时可以选择恰当的异样类类型。2、常见的error类用途异样类名1.inkageError动态链接失败VirtUalMaChineErrOr虚拟机错误AWTErrorAWT错误3、常见运行时异样类异样类名用途ArithmeticExccption数学运算异样,比如除数为零的异样IndexOutOfBoundsException下标越界异样,比如集合、数组等ArraylndexoutofBoundsExccption访问数组元素的下标越界异样StringlndexoutofBoundsExccption字符串下标越界异样ClasscascExccption类强制转换异样NullpointcrExccption当程序试图访问一个空数组中的元素,或访问一个空对象中的方法或变地时产生的异样。4、常用的非运行时异样异样类名用途ClassNotFoundException指定类或接口不存在的异样IllegalAccessException非法访问异样Ioexception输入输出异样找不到指定文件的异样ProtocolException网络协议异样SocketExceptionSoCket操作异样MalformedUR1.Exception统一资源定位符(UR1.)的格式不正确的异样5、JaVa的异样处理机制描述如下:在一个方法的运行过程中,假如发生了异样,则这个方法(或者是JaVa虚拟机)生成一个代表该异样的对象(它包含了异样的具体信息),并把它交给运行时系统,运行时系统找寻相应的代码来处理这一异样。我们把生成异样对象并把它提交给运行时系统的过程称为抛出(throwl个鼻祥,运行时系统找寻相应的代码来处理这一异样,系统在方法的调用栈中杳找,从产生异样的方法起先进行回朔,沿着被调用的依次往前找d,直到找到包含相应异样处理的方法为止。其过程如图10-1所示。这一过程称为捕获(CatCh)一个异样。如该异样未进行胜利捕获,则程J字将终止运行C5、界的!获和处理格式:try正常程序段,可能抛出异样;CatCh(异样类1异样变显)捕获异样类1有关的处理程序段;CatCh(异样类2异样变量)(捕获异样类2有关的处理程序段;finally确定会运行的程序代码;1try块一捕获异样:用于监控可能发生异样的程序代码块是否发生异样,假如发生界样,Try代码块将抛出异样类所产生的对象并立即结束执行,而转向异样处理CatCh部分。对于系统产生的异样或程序块中未用try监控所产生的一场,将一律由java编译系统自动将异样对象抛出。1CatCh块处理异样:抛出的异样对象假如属于Cateh内所定义的异样类,则catch会捕获该异样,并进入catch中的对应代码段接着运行程序,假如异样对象不属于CatCh中所定义的异样类,则进入finally块接着运行程序。CatCh包括两个参数:个是类名,指出捕获的异样类型,必需使ThroWable类的子类;一个是参数名,用来引用被捕获的对象。Catch块所捕获的对象并不须要与它的参数类型精确匹配,它可以捕获参数中指出的异样类的对象与其全部子类的对象1finally块最终处理:无论是否发生异样都会执行的语句块。比如执行关闭打开的文件、删除临时文件,关闭数据库连接等操作C曾*1CatCh可以有多个,try和finally只能有一个1try后百必务要跟Catch、finally其中的一个,印但一个try、catch、如皿过语句只能省略8tch、finalW中的一个。定义多个CatCh可精确地定位java异样。假如为子类的异样定义了特殊的CatCh块,而父类的异样则放在另外一个CatCh块中,此时,必需满意以卜.规则:子类异样的处理块必需在父类异样处理块的前面,否则会发生编译错误。所以,越特殊的异样越在前面处理,越普遍的异样越在后面处理。这类似于制订防火堵的规则次序:较特殊的规则在前,较一般的规则在后。异样类常用方法常用非法用途VoidStringgetMessage()返Pl异样对象的一个简短描述VoidStringtoString()获得异样对象的具体信息VoidPrintStackTraceO在限制台上打印异样对象和它的追踪信息6、D数学运算异样classMathException;publicstaticvoidmain(Stringargs11)inta=5,b=;intc=ab;除数为O,出现异样System.out.print(c);在吩咐提示符下运行该程序,可以发觉编译正常,但是执行时出现错误的提示如下:Exceptioninthread"main"java.lang.ArithmcticException:/byzeroatMathExccption.main(MathException.java:4)翻译过来就是:在类java.IangArithmeticException主线程中"main”方法中出现异样:除数为零,(MathExceptionJavaM"此处指MathEXCePtiOrI类中的第四行”)这是一个典型的运行错误,程序告知了一卜几个信息;1出错的类:MathException1出错的代码:MathExceptionjava:4因为编译系统给出r出错的缘由和出错类的位置,可以便利地进行代码调试。2)捕获数学运算异样的处理publicClassTryCatchDemoIpublicstaticvoidmain(Stringargs)tryinta=8,b=0;intc=ab;System.out.print(c);/ArithmeticException是异样类的名称,e是引用的参数名称catch(ArithmeticExceptione)SyStem.out.println("发生的异样简短描述是:"+e.getMessage();SyStem.out.println("发生的异样具体信息是:"+e.toStringO);程序执行结果:发生的异样简短描述是:/byzero发生的异样具体信息是:java.Iang.ArithmeticException:/byzero3)数组下标越界异样publicclassarrayExceptionJpublicstaticvoidmain(Stringargs)被监视的代码块tryint11a=newint4;a4)=9;/处理下标越界异样CatCh(ArraylndCXoUtOfBOUndSEXCePtiOnaiObc)SyStem.out.println("这里出现的错误类型是:数组下标越界!");处理空引用异样Catch(NulipointerExceptionnpe)SyStem.out.rintln("这里出现的错误类型是:空引用!!”);finally:SyStCm.out.rintlnC程序无条件执行该语句!”);三、异样的抛出异样的抛出可以分为两大类:1系统自动抛出异样比如上面的例子就是系统自动抛出异样,通过trycatch捕获异样对象,并接着相应的处理。1通过关键字throw将异样对象显性地抛出。即在程序中生成自己的异样对象,即异样可以不是出错产生,而是人为编写代码主动抛出。显性抛出异样从某种程度上实现了将处理异样的代码从正常流程代码中分别开r,使得程序的主线保证相对完整,同时增加r程序的可读性和可维护性C异样沿着调用层次向上抛出,交由调用它的方法来处理。为什么要在方法中抛出异样?系统自动抛出异样一般就能解决大部分问题,但方时候,程序会产生特定的要求,须要由用户自己定义异样信息,乂或者联合开发程序模块时,不同程序员须要将各自负责代码部分尽量避开因程序出错影响其他人的编码,都须要显式抛出异样,以便程序进行处理。这时候就须要在方法中抛出异样。舁样抛出的语法:thrownew异样类();其中异样类必需Throwable类与其子类。比如:thrownewThrowableObjectO;ArithmeticExceptione=newArithmeticExceptionO;throwe;throws子句的方法声明的一般格式如下:类型说明方法名(参数列表)throws异样类型列表方法体;举例:classThrowExceptionJ/throwne方法后用throws声明异样类ArithmeticExccptionstaticvoidthrowne(inti)throwsArithmeticExceptionif(i=0)thrownewArithmetiCEXCePtionri值为零");用throw抛出个异样publicstaticvoidmain(Stringargs(l)/捕获异样try:IhrowOnc(O);CatCh(ArithmetiCEXCCPtionc)SyStem.out.printing已捕获到异样错误:"+e.getMcssage();程序执行结果:已捕获到异样错误:i值为零例:importjava.io.*;classFather?父类方法,没有抛出异样publicvoidmyFunctionOSyStem.out.println("这里是父类方法,该方法没有异样抛出!");classSonextendsFather子类重写父类方法,有捕获异样抛出publicvoidmyFunction()throwsInterruptedExceptionSyStem.out.PrintIn("这里是子类方法,该方法抛出InterruptedException异样!");publicclassTestExceptionDemoJpublicstaticvoidmain(Stringargs)创建子类对象Sons=newSon();受监视的代码trys.myFunction();/异样处理代码Catch(InterruptedExceptione)e.printStackTrace();例:重新抛出异样对象程序执行时,要求用户从键盘输入一个字符号。当输入'0'时,程序执行结果:devidedby;当输入非tOt字符时,程序执行运算出的结果。importjava.io.*;classJavaThrowspublicintcompute(intx)throwsArithmeticExceptionint.z=10/x;可能抛出异样类型ArithmetiCEXCePtiOn的对象returnz;publicvoidmethod1()intx;tryX=System.in.readO;可能抛出异样类型K)EXCePtiOn的对象;x=x-48;X=Compute(x);/抛出异样类型ArithmetiCEXCePtiOn的对象System.out.println(x);catch(IOExccptionioe)捕获异样类型IOException的对象;System.out.println("rcadcrror");CatchfArithmeticExceptione)/捕获异样类型ArithmeticException的对象System.out.println(",devidedby,');publicstaticvoidmain(Stringargs)JavaThrowst1=newJavaThrowsO;t1.method1();四、自定义异样用户自定义的异样类,只Im承一个已有的舁样类就可以了,包括卷承Exception类与其子类,或者维承已自定义好的异样类。假如没有特殊说明,可以干藻用EXeCPtion类作为父类。自定义类的格式如下:class异样类名extendsExceptionn自定义异样类必需继承自ThrOWabIe或EXCePtion类,建议用Exception类。股不把自定义异样作为Error的子类,因为ErrOr通常被用来表示系统内部的严峻故障。n当自定义异样是从RUntimCEXCCPtiOn与其子类继成而来时,该自定义异样是运行时异样,程序中可以不捕获和处理它。n当自定义异样是从ThrOWable、EXCePtion与其子类继承而来时,该自定义异样是编译时异样,也即程序中必需捕获并处理它。运用自定义鼻样的步舞如下:1首先出睡承java.lang.Exception类声明自定义的异样类。1在方法的声明部分用throws语句声明该方法可拗t出的鼻祥。1在方法体的适当位倒建自定义异样类的对象,并用throw语句将异样MHio1调用该方法时对可能产生的异样进行触,并处理异样。例:自定义一个异样类,输入个数,大于10,捕获异样。/MyExceptionDemoJavaClassMyExceptionextendsException继承了Exception这个父类privateintdetail;MyException(inta)detail=a;publicStringtoStringO!retum"MyException"+detail+""classMyExceptionDemoJstaticvoidcompute(inta)throwsMyExceptionSystem.out.println("iJjJ11compute("+a+")");if(a>10)a大于10,则抛出异样thrownewMyException(八);SyStem.out.println("常规退出");publicstaticvoidmain(Stringargs)trycompute(l);a小于10,常规退出compute(20);a大于10,则抛出异样catch(MyExceptione)SyStem.out.printing捕获"+e);这样就可以用自己定义的类来捕获异样r例:计算两个数之和,当Itt一个数超出低Bl(10,20)时,撤出自己的舁郴/NewExceptionJavaClassNumbcrRangeExccptionextendsEXCePtiOnpublicNumberRangeException(Stringmsg)super(msg);/throws重新抛出异样NumberRangeExceptionpublicintCalcnswer(Stringstr!,Stringstr2)throwsNumberRangeExceptionJintinti,int2;intanswer=-1;tryinti=Integer.parselnt(strl);可能产生异样对象NumberFormatExceptioneint2=Integer.parselnt(str2);产生异样对象NumberFormatExceptioneif(inti<10)II(inti>20)(int2<10)II(int2>20)NumberRangeExceptione=newNumberRangeExceptionCNumbersarenotwithinthespecifiedrange.");throwe;抛出H定义异样对象NumbcrRangeExceptioneanswer=inti+int2;catch(NumberFormatExccptione)/捕获异样对象NumberRangeExceptioneSystem.out.println(e.toString();returnanswer;在调用方法getAnswer中捕获异样publicvoidgetAnswer()StringanswerStr;try/将numl、num2的中的数字更改为小于10或大于20,以查看捕获异样结果。Stringnum1="13"Stringnum2="12"intanswer=CalcAnswer(num1,num2);/抛出异样对象NumberRangeExceptioneanswerStr=String,valucf(answer);捕catch(NUmbCrRangeEXCCPtiOnC乂获异样对象NumberRangeExceptioneanswerStr=e.getMcssage();System.out.println(answerStr);publicstaticvoidmain(Stringargs11)NumberRangeExceptiont1=newNumberRangeExceptionCtest");t1.getAnswerO;

    注意事项

    本文(java程序错误类型及异常处理.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开