版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
使用异常处理程序错误第十五讲1使用异常处理程序错误第十五讲1回顾什么是常量?Java中,常量的定义规则有哪些?什么是面向接口编程,它的好处是什么?2回顾什么是常量?Java中,常量的定义规则有哪些?2预习检查什么是异常?Java中,如何进行异常处理?请说明throw与throws的区别与联系?3预习检查什么是异常?Java中,如何进行异常处理?3本章任务升级Hello,完成如下功能:根据课程代码输出课程名称输出各学期平均课时等信息使用log4j记录异常日志4本章任务升级Hello,完成如下功能:4掌握Java的异常处理机制运用try、catch、finally处理异常运用throw抛出异常运用throws声明异常掌握log4j的用法,能够记录异常日志本章目标5掌握Java的异常处理机制本章目标5生活中的异常正常情况下,小王每日开车去上班,耗时大约30分钟但是,异常情况迟早要发生!一路畅通堵车!撞车!6生活中的异常正常情况下,小王每日开车去上班,耗时大约30分钟程序中的异常publicclassHello{publicstaticvoidmain(String[]args){System.out.print("请输入课程代号(1至3之间的数字):");Scannerin=newScanner(System.in);intcourseCode=in.nextInt();//从键盘输入整数switch(courseCode){case1:System.out.println("C#编程");break;case2:System.out.println("Java编程");break;case3:System.out.println("SQL基础");}}}输入:2输出:Java编程输入:B程序中断运行!正常情况:异常情况:7程序中的异常publicclassHello{输入:2什么是异常异常就是在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序绕行或者等待请求交警解决异常!面对异常该怎么办呢?通常情况下,我们会这样处理:程序运行程序中断运行堵车!撞车!生活中,我们会根据不同的异常进行相应的处理,而不会就此中断我们的生活8什么是异常异常就是在程序的运行过程中所发生的不正常的事件,它什么是异常处理Java语言使用异常处理机制为程序提供了错误处理的能力程序中预先想好了对付异常的处理办法异常!程序运行处理完毕,程序继续运行对异常进行处理9什么是异常处理Java语言使用异常处理机制为程序提供了错误处Java中如何进行异常处理Java的异常处理是通过5个关键字来实现的:try、catch、finally、throw、throws捕获异常catchtryfinally执行可能产生异常的代码捕获异常无论是否发生异常,代码总能执行手动抛出异常抛出异常throw声明异常声明方法可能要抛出的各种异常throws10Java中如何进行异常处理Java的异常处理是通过5个关键字try/catch块7-1trycatchtry/catch块后的代码段publicvoidmethod(){try{//代码段(此处不会产生异常)}catch(异常类型ex){//对异常进行处理的代码段}//代码段}使用try/catch块捕获异常,分为三种情况:第一种情况11try/catch块7-1trycatchtry/catctry/catch块7-2使用示例模拟第一种情况:publicclassException{publicstaticvoidmain(String[]args){System.out.print("请输入课程代号(1至3之间的数字):");Scannerin=newScanner(System.in);try{intcourseCode=in.nextInt();switch(courseCode){ case1: System.out.println("C#编程"); break; case2: System.out.println("Java编程"); break; case3: System.out.println("SQL基础");}}catch(Exceptionex){System.out.println("输入不为数字!");}System.out.println("欢迎提出建议!");}}输入:2Java编程欢迎提出建议!控制台输出12try/catch块7-2使用示例模拟第一种情况:publitry/catch块7-3trycatch异常类型匹配try/catch块后的代码段进入catch块publicvoidmethod(){try{//代码段1//产生异常的代码段2//代码段3}catch(异常类型ex){//对异常进行处理的代码段4}//代码段5}使用try/catch块捕获异常,分为三种情况:第二种情况产生异常对象程序继续执行异常是一种特殊的对象,类型为java.lang.Exception或其子类
发生异常13try/catch块7-3trycatch异常类型匹配trtry/catch块7-4使用示例模拟第二种情况:publicclassException{publicstaticvoidmain(String[]args){System.out.print("请输入课程代号(1至3之间的数字):");Scannerin=newScanner(System.in);try{intcourseCode=in.nextInt();switch(courseCode){ case1: System.out.println("C#编程"); break; case2: System.out.println("Java编程"); break; case3: System.out.println("SQL基础");}}catch(Exceptionex){System.out.println("输入不为数字!");
ex.printStackTrace();}System.out.println("欢迎提出建议!");}}输入:B输入不为数字!异常堆栈信息欢迎提出建议!控制台输出14try/catch块7-4使用示例模拟第二种情况:publiprintStackTrace的堆栈跟踪功能显示出程序运行到当前类的执行流程publicclassException{publicstaticvoidmain(String[]args){System.out.print("请输入课程代号(1至3之间的数字):");Scannerin=newScanner(System.in);try{intcourseCode=in.nextInt();//此处代码省略}catch(Exceptionex){System.out.println("输入不为数字!");
ex.printStackTrace();}System.out.println("欢迎提出建议!");}}try/catch块7-5java.util.InputMismatchExceptionatjava.util.Scanner.throwFor(Scanner.java:840)atjava.util.Scanner.next(Scanner.java:1461)atjava.util.Scanner.nextInt(Scanner.java:2091)atjava.util.Scanner.nextInt(Scanner.java:2050)ats2jsp.sg.ch05.AccpException.main(AccpException.java:23)异常类型异常堆栈信息在此方法中抛出了异常15printStackTrace的堆栈跟踪功能显示出程序运行到try/catch块7-6trycatch异常类型不匹配try/catch块后的代码段程序中断运行
发生异常publicvoidmethod(){try{//代码段1//产生异常的代码段2//代码段3}catch(异常类型ex){//对异常进行处理的代码段4}//代码段5}使用try/catch块捕获异常,分为三种情况:第三种情况产生异常对象16try/catch块7-6trycatch异常类型不匹配ttry/catch块7-7使用示例模拟第三种情况:publicclassException2{publicstaticvoidmain(String[]args){System.out.print("请输入课程代号(1至3之间的数字):");Scannerin=newScanner(System.in);try{intcourseCode=in.nextInt();switch(courseCode){ case1: System.out.println("C#编程"); break; case2: System.out.println("Java编程"); break; case3: System.out.println("SQL基础");}}catch(NullPointerExceptionex){System.out.println("输入不为数字!");}System.out.println("欢迎提出建议!");}}输入:B程序中断运行17try/catch块7-7使用示例模拟第三种情况:publitry/catch/finally2-1在try/catch块后加入finally块,可以确保无论是否发生异常,finally块中的代码总能被执行try块finally块catch块无异常有异常18try/catch/finally2-1在try/catctry/catch/finally2-2publicclassException3{publicstaticvoidmain(String[]args){System.out.print("请输入课程代号(1至3之间的数字):");Scannerin=newScanner(System.in);try{intcourseCode=in.nextInt();switch(courseCode){ case1: System.out.println("C#编程"); break; case2: System.out.println("Java编程"); break; case3: System.out.println("SQL基础");}}catch(Exceptionex){System.out.println("输入不为数字!");}finally
{System.out.println("欢迎提出建议!");}}}输入:2Java编程欢迎提出建议!控制台输出输入:B输入不为数字!欢迎提出建议!第一种情况:无异常第二种情况:有异常19try/catch/finally2-2publicc小结1编写一个类ExceptionTest1,在main方法中使用try、catch、finally:在try块中,编写被0除的代码在catch块中,捕获被0除所产生的异常,并且打印异常信息在finally块中,打印一条语句20小结1编写一个类ExceptionTest1,在main方publicvoidmethod(){try{//代码段//产生异常(异常类型2)}catch(异常类型1ex){//对异常进行处理的代码段}catch(异常类型2ex){//对异常进行处理的代码段}catch(异常类型3ex){//对异常进行处理的代码段}//代码段}多重catch块2-1一段代码可能会引发多种类型的异常当引发异常时,会按顺序来查看每个catch语句,并执行第一个与异常类型匹配的catch语句执行其中的一条catch语句之后,其后的catch语句将被忽略
try与异常类型1不匹配try/catch块后的代码段发生异常产生异常对象catch与异常类型2匹配catchcatch程序继续执行进入catch块21publicvoidmethod(){多重catch块多重catch块2-2publicclassException4{publicstaticvoidmain(String[]args){Scannerin=newScanner(System.in);try{System.out.print(“请输入S1的总学时:");inttotalTime=in.nextInt();//总学时System.out.print(“请输入S1的课程数目:");inttotalCourse=in.nextInt();//课程数目System.out.println(“S1各课程的平均学时为:"+totalTime/totalCourse);}catch(InputMismatchExceptione1){System.out.println("输入不为数字!");}catch(ArithmeticExceptione2){System.out.println("课程数目不能为零!");}catch(Exceptione){System.out.println("发生错误:"+e.getMessage());}}}输入:270H在安排catch语句的顺序时,首先应该捕获最特殊的异常,然后再逐渐一般化,即先子类后父类输出:输入不为数字!进入第一个catch块输入:2700输出:课程数目不能为零!进入第二个catch块22多重catch块2-2publicclassExcep抛出异常如果在当前环境无法解决一个异常,就要将其抛出,把异常交给调用者处理publicclassTeacher{privateStringid;//教员编号,长度应为7publicvoidsetId(StringpId){//判断教员编号的长度是否为7if(pId.length()==7){id=pId;}else{thrownewIllegalArgumentException("参数长度应为7!");}}}抛出异常:在不使用try、catch语句或throws的前提下,只可以抛出运行时异常对象RuntimeException或其子类对象,如:NullPointerException、IllegalArgumentException等publicclassAccpTeacherTest{publicstaticvoidmain(String[]args){AccpTeacherteacher=newAccpTeacher();try{teacher.setId("088");}catch(IllegalArgumentExceptionex){System.out.println(ex.getMessage());}}}捕获异常参数长度应为7!控制台输出23抛出异常如果在当前环境无法解决一个异常,就要将其抛出,把异常声明异常publicclassTeacher{privateStringid;//教员编号,长度应为7publicvoidsetId(StringpId)throwsIllegalArgumentException{//判断教员编号的长度是否为7if(pId.length()==7){id=pId;}else{thrownewIllegalArgumentException("参数长度应为7!");}}}publicclassTeacherTest{publicstaticvoidmain(String[]args){AccpTeacherteacher=newAccpTeacher();try{teacher.setId("088");}catch(IllegalArgumentExceptionex){System.out.println(ex.getMessage());}}}由调用者捕获异常声明该方法可能会产生异常24声明异常publicclassTeacher{publ小结2编写类ExceptionTest2:定义两个方法:go()和main()在go方法中声明要抛出异常,在该方法体内,抛出一个Exception对象在main()方法中,调用go方法,使用try/catch捕获go方法中抛出的异常25小结2编写类ExceptionTest2:25使用log4j记录日志信息publicclassTeacherTest{publicstaticvoidmain(String[]args){Teacherteacher=newTeacher();try{teacher.setId("088");}catch(IllegalArgumentExceptionex){System.out.println(ex.getMessage());}}}控制台输出参数长度应为7!如果想把错误信息保存到文件中,该如何处理?使用log4j可以解决这个问题,log4j是一个流行的日志记录工具这是使用log4j后,存储在文本文件中的日志信息26使用log4j记录日志信息publicclassTea什么是日志日志:用来记录一些重要的操作信息有价值的日志数据能够帮助用户提前发现和避免灾难,并且找到事件发生的原因publicclassTeacherTest{publicstaticvoidmain(String[]args){Teacherteacher=newTeacher();try{teacher.setId("088");}catch(IllegalArgumentExceptionex){System.out.println(ex.getMessage());}}}在控制台输出日志信息,提示用户出现错误的原因27什么是日志日志:用来记录一些重要的操作信息publiccl如何使用log4j记录日志项目属性:弹出项目的属性窗口第一步:在工程中加入log4j所使用的jar文件Java构建路径库添加外部JAR:弹出选择JAR的窗口通过选择JAR的窗口,找到log4j-1.2.x.jar,并确认回到项目的属性窗口,点击确定1234演示:在工程中加入log4j所使用的jar文件28如何使用log4j记录日志项目属性:弹出项目的属性窗如何使用log4j记录日志第二步:创建perties文件选择欲使用log4j的项目右键点击src新建其他:弹出选择向导窗口在选择向导窗口中,选择常规文件下一步:弹出新建文件的窗口在新建文件窗口中,输入文件名perties完成:创建工作结束12329如何使用log4j记录日志第二步:创建pe如何使用log4j记录日志第三步:使用log4j记录日志信息importorg.apache.log4j.Logger;publicclassTeacherLog4j{publicstaticvoidmain(String[]args){Teacherteacher=newTeacher();Loggerlogger=Logger.getLogger(AccpTeacherLog4j.class.getName());try{logger.debug("设置教员的编号。");teacher.setId("088");}catch(IllegalArgumentExceptionex){(ex.getMessage());}}}获取日志记录器,这个记录器将负责控制日志信息使用Logger对象的debug、info方法输出日志信息30如何使用log4j记录日志第三步:使用log4j记录日志信息如何使用log4j记录日志第四步:编写perties文件,配置日志信息###把日志信息输出到控制台###log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-ddHH:mm:ss}%m%n###把日志信息输出到文件:accp.log###log4j.appender.file=org.apache.log4j.FileAppenderlog4j.appender.file.File=accp.loglog4j.appender.file.layout=org.apache.log4j.PatternLayoutlog4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-ddHH:mm:ss}%l%m%n###设置优先级别、以及输出源###log4j.rootLogger=debug,stdout,file日志信息将写到文件中指定日志输出的文件名指定输出格式:显示日期和log信息设置优先级别为debug、日志被输出到多个输出源日志信息将写到控制台指定日志信息输出目标指定输出格式:显示日期,日志发生位置和日志信息输出源名称优先级从高到低分别是ERROR、WARN、INFO、DEBUG在此处,如果优先级别设为info,那么使用debug方法打印的日志信息将不被输出31如何使用log4j记录日志第四步:编写pe如何使用log4j记录日志运行效果展示控制台输出效果包含日期与日志信息文件输出效果包含日期、日志发生位置、与日志信息1232如何使用log4j记录日志运行效果展示控制台输出效果包含日期总结请给出下列Java代码的运行结果publicclassTest{publicstaticvoidmain(String[]args){ newTest().test();}publicvoidtest(){try{int[]arr=newint[3];arr[3]=2;System.out.println("try");}catch(ArrayIndexOutOfBoundsExceptione){ System.out.println("catch1");}catch(Exceptione){System.out.println("catch2");}finally{System.out.println("finally");}}}修改perties文件,设置优先级为info,在控制台以及accp.log文件中将会输出什么内容?控制台输出catch1finally将只输出使用Logger对象的info方法输出的日志信息33总结请给出下列Java代码的运行结果publicclas使用异常处理程序错误第十五讲34使用异常处理程序错误第十五讲1回顾什么是常量?Java中,常量的定义规则有哪些?什么是面向接口编程,它的好处是什么?35回顾什么是常量?Java中,常量的定义规则有哪些?2预习检查什么是异常?Java中,如何进行异常处理?请说明throw与throws的区别与联系?36预习检查什么是异常?Java中,如何进行异常处理?3本章任务升级Hello,完成如下功能:根据课程代码输出课程名称输出各学期平均课时等信息使用log4j记录异常日志37本章任务升级Hello,完成如下功能:4掌握Java的异常处理机制运用try、catch、finally处理异常运用throw抛出异常运用throws声明异常掌握log4j的用法,能够记录异常日志本章目标38掌握Java的异常处理机制本章目标5生活中的异常正常情况下,小王每日开车去上班,耗时大约30分钟但是,异常情况迟早要发生!一路畅通堵车!撞车!39生活中的异常正常情况下,小王每日开车去上班,耗时大约30分钟程序中的异常publicclassHello{publicstaticvoidmain(String[]args){System.out.print("请输入课程代号(1至3之间的数字):");Scannerin=newScanner(System.in);intcourseCode=in.nextInt();//从键盘输入整数switch(courseCode){case1:System.out.println("C#编程");break;case2:System.out.println("Java编程");break;case3:System.out.println("SQL基础");}}}输入:2输出:Java编程输入:B程序中断运行!正常情况:异常情况:40程序中的异常publicclassHello{输入:2什么是异常异常就是在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序绕行或者等待请求交警解决异常!面对异常该怎么办呢?通常情况下,我们会这样处理:程序运行程序中断运行堵车!撞车!生活中,我们会根据不同的异常进行相应的处理,而不会就此中断我们的生活41什么是异常异常就是在程序的运行过程中所发生的不正常的事件,它什么是异常处理Java语言使用异常处理机制为程序提供了错误处理的能力程序中预先想好了对付异常的处理办法异常!程序运行处理完毕,程序继续运行对异常进行处理42什么是异常处理Java语言使用异常处理机制为程序提供了错误处Java中如何进行异常处理Java的异常处理是通过5个关键字来实现的:try、catch、finally、throw、throws捕获异常catchtryfinally执行可能产生异常的代码捕获异常无论是否发生异常,代码总能执行手动抛出异常抛出异常throw声明异常声明方法可能要抛出的各种异常throws43Java中如何进行异常处理Java的异常处理是通过5个关键字try/catch块7-1trycatchtry/catch块后的代码段publicvoidmethod(){try{//代码段(此处不会产生异常)}catch(异常类型ex){//对异常进行处理的代码段}//代码段}使用try/catch块捕获异常,分为三种情况:第一种情况44try/catch块7-1trycatchtry/catctry/catch块7-2使用示例模拟第一种情况:publicclassException{publicstaticvoidmain(String[]args){System.out.print("请输入课程代号(1至3之间的数字):");Scannerin=newScanner(System.in);try{intcourseCode=in.nextInt();switch(courseCode){ case1: System.out.println("C#编程"); break; case2: System.out.println("Java编程"); break; case3: System.out.println("SQL基础");}}catch(Exceptionex){System.out.println("输入不为数字!");}System.out.println("欢迎提出建议!");}}输入:2Java编程欢迎提出建议!控制台输出45try/catch块7-2使用示例模拟第一种情况:publitry/catch块7-3trycatch异常类型匹配try/catch块后的代码段进入catch块publicvoidmethod(){try{//代码段1//产生异常的代码段2//代码段3}catch(异常类型ex){//对异常进行处理的代码段4}//代码段5}使用try/catch块捕获异常,分为三种情况:第二种情况产生异常对象程序继续执行异常是一种特殊的对象,类型为java.lang.Exception或其子类
发生异常46try/catch块7-3trycatch异常类型匹配trtry/catch块7-4使用示例模拟第二种情况:publicclassException{publicstaticvoidmain(String[]args){System.out.print("请输入课程代号(1至3之间的数字):");Scannerin=newScanner(System.in);try{intcourseCode=in.nextInt();switch(courseCode){ case1: System.out.println("C#编程"); break; case2: System.out.println("Java编程"); break; case3: System.out.println("SQL基础");}}catch(Exceptionex){System.out.println("输入不为数字!");
ex.printStackTrace();}System.out.println("欢迎提出建议!");}}输入:B输入不为数字!异常堆栈信息欢迎提出建议!控制台输出47try/catch块7-4使用示例模拟第二种情况:publiprintStackTrace的堆栈跟踪功能显示出程序运行到当前类的执行流程publicclassException{publicstaticvoidmain(String[]args){System.out.print("请输入课程代号(1至3之间的数字):");Scannerin=newScanner(System.in);try{intcourseCode=in.nextInt();//此处代码省略}catch(Exceptionex){System.out.println("输入不为数字!");
ex.printStackTrace();}System.out.println("欢迎提出建议!");}}try/catch块7-5java.util.InputMismatchExceptionatjava.util.Scanner.throwFor(Scanner.java:840)atjava.util.Scanner.next(Scanner.java:1461)atjava.util.Scanner.nextInt(Scanner.java:2091)atjava.util.Scanner.nextInt(Scanner.java:2050)ats2jsp.sg.ch05.AccpException.main(AccpException.java:23)异常类型异常堆栈信息在此方法中抛出了异常48printStackTrace的堆栈跟踪功能显示出程序运行到try/catch块7-6trycatch异常类型不匹配try/catch块后的代码段程序中断运行
发生异常publicvoidmethod(){try{//代码段1//产生异常的代码段2//代码段3}catch(异常类型ex){//对异常进行处理的代码段4}//代码段5}使用try/catch块捕获异常,分为三种情况:第三种情况产生异常对象49try/catch块7-6trycatch异常类型不匹配ttry/catch块7-7使用示例模拟第三种情况:publicclassException2{publicstaticvoidmain(String[]args){System.out.print("请输入课程代号(1至3之间的数字):");Scannerin=newScanner(System.in);try{intcourseCode=in.nextInt();switch(courseCode){ case1: System.out.println("C#编程"); break; case2: System.out.println("Java编程"); break; case3: System.out.println("SQL基础");}}catch(NullPointerExceptionex){System.out.println("输入不为数字!");}System.out.println("欢迎提出建议!");}}输入:B程序中断运行50try/catch块7-7使用示例模拟第三种情况:publitry/catch/finally2-1在try/catch块后加入finally块,可以确保无论是否发生异常,finally块中的代码总能被执行try块finally块catch块无异常有异常51try/catch/finally2-1在try/catctry/catch/finally2-2publicclassException3{publicstaticvoidmain(String[]args){System.out.print("请输入课程代号(1至3之间的数字):");Scannerin=newScanner(System.in);try{intcourseCode=in.nextInt();switch(courseCode){ case1: System.out.println("C#编程"); break; case2: System.out.println("Java编程"); break; case3: System.out.println("SQL基础");}}catch(Exceptionex){System.out.println("输入不为数字!");}finally
{System.out.println("欢迎提出建议!");}}}输入:2Java编程欢迎提出建议!控制台输出输入:B输入不为数字!欢迎提出建议!第一种情况:无异常第二种情况:有异常52try/catch/finally2-2publicc小结1编写一个类ExceptionTest1,在main方法中使用try、catch、finally:在try块中,编写被0除的代码在catch块中,捕获被0除所产生的异常,并且打印异常信息在finally块中,打印一条语句53小结1编写一个类ExceptionTest1,在main方publicvoidmethod(){try{//代码段//产生异常(异常类型2)}catch(异常类型1ex){//对异常进行处理的代码段}catch(异常类型2ex){//对异常进行处理的代码段}catch(异常类型3ex){//对异常进行处理的代码段}//代码段}多重catch块2-1一段代码可能会引发多种类型的异常当引发异常时,会按顺序来查看每个catch语句,并执行第一个与异常类型匹配的catch语句执行其中的一条catch语句之后,其后的catch语句将被忽略
try与异常类型1不匹配try/catch块后的代码段发生异常产生异常对象catch与异常类型2匹配catchcatch程序继续执行进入catch块54publicvoidmethod(){多重catch块多重catch块2-2publicclassException4{publicstaticvoidmain(String[]args){Scannerin=newScanner(System.in);try{System.out.print(“请输入S1的总学时:");inttotalTime=in.nextInt();//总学时System.out.print(“请输入S1的课程数目:");inttotalCourse=in.nextInt();//课程数目System.out.println(“S1各课程的平均学时为:"+totalTime/totalCourse);}catch(InputMismatchExceptione1){System.out.println("输入不为数字!");}catch(ArithmeticExceptione2){System.out.println("课程数目不能为零!");}catch(Exceptione){System.out.println("发生错误:"+e.getMessage());}}}输入:270H在安排catch语句的顺序时,首先应该捕获最特殊的异常,然后再逐渐一般化,即先子类后父类输出:输入不为数字!进入第一个catch块输入:2700输出:课程数目不能为零!进入第二个catch块55多重catch块2-2publicclassExcep抛出异常如果在当前环境无法解决一个异常,就要将其抛出,把异常交给调用者处理publicclassTeacher{privateStringid;//教员编号,长度应为7publicvoidsetId(StringpId){//判断教员编号的长度是否为7if(pId.length()==7){id=pId;}else{thrownewIllegalArgumentException("参数长度应为7!");}}}抛出异常:在不使用try、catch语句或throws的前提下,只可以抛出运行时异常对象RuntimeException或其子类对象,如:NullPointerException、IllegalArgumentException等publicclassAccpTeacherTest{publicstaticvoidmain(String[]args){AccpTeacherteacher=newAccpTeacher();try{teacher.setId("088");}catch(IllegalArgumentExceptionex){System.out.println(ex.getMessage());}}}捕获异常参数长度应为7!控制台输出56抛出异常如果在当前环境无法解决一个异常,就要将其抛出,把异常声明异常publicclassTeacher{privateStringid;//教员编号,长度应为7publicvoidsetId(StringpId)throwsIllegalArgumentException{//判断教员编号的长度是否为7if(pId.length()==7){id=pId;}else{thrownewIllegalArgumentException("参数长度应为7!");}}}publicclassTeacherTest{publicstaticvoidmain(String[]args){AccpTeacherteacher=newAccpTeacher();try{teacher.setId("088");}catch(IllegalArgumentExceptionex){System.out.println(ex.getMessage());}}}由调用者捕获异常声明该方法可能会产生异常57声明异常publicclassTeacher{publ小结2编写类ExceptionTest2:定义两个方法:go()和main()在go方法中声明要抛出异常,在该方法体内,抛出一个Exception对象在main()方法中,调用go方法,使用try/catch捕获go方法中抛出的异常58小结2编写类ExceptionTest2:25使用log4j记录日志信息publicclassTeacherTest{publicstaticvoidmain(String[]args){Teacherteacher=newTeacher();try{teacher.setId("088");}catch(IllegalArgumentExceptionex){System.out.println(ex.getMessage());}}}控制台输出参数长度应为7!如果想把错误信息保存到文件中,该如何处理?使用log4j可以解决这个问题,log4j是一个流行的日志记录工具这是使用log4j后,存储在文本文件中的日志信息59使用log4j记录日志信息publicclassTea什么是日志日志:用来记录一些重要的操作信息有价值的日志数据能够帮助用户提前发现和避免灾难,并且找到事件发生的原因publicclassTeacherTest{publicstaticvoidmain(String[]args){Teacherteacher=newTeacher();try{teacher.setId("088");}catch(IllegalArgumentExceptionex){System.out.println(ex.getMessage());}}}在控制台输出日志信息,提示用户出现错误的原因60什么是日志日志:用来记录一些重要的操作信息publiccl如何使用log4j记录日志项目属性:弹出项目的属性窗口第一步:在工程中加入log4j所使用的jar文件Java构建路径库添加外部JAR:弹出选择JAR的窗口通
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度智能城市建设项目承包合同4篇
- 2025年度智能水电安装与维护一体化承包合同范文4篇
- 2024版广告合同购销
- 2025年度建筑节能环保材料研发与应用合同2篇
- 2025年度企业内部采购人员廉洁自律合作协议3篇
- 2025年度特种车辆充电桩定制与安装合同4篇
- 2024铁路客运服务合同范本3篇
- 2025年度智慧城市建设项目承包合同规范3篇
- 2025年度智能农业化肥代销合作协议范本4篇
- 中国蓝宝石衬底材料行业市场调查研究及发展战略规划报告
- 2023年上海英语高考卷及答案完整版
- 西北农林科技大学高等数学期末考试试卷(含答案)
- 金红叶纸业简介-2 -纸品及产品知识
- 《连锁经营管理》课程教学大纲
- 《毕淑敏文集》电子书
- 颈椎JOA评分 表格
- 员工岗位能力评价标准
- 定量分析方法-课件
- 朱曦编著设计形态知识点
- 110kV变电站工程预算1
- 某系统安全安全保护设施设计实施方案
评论
0/150
提交评论