使用异常处理程序错误和log4j记录错误ppt课件

上传人:re****.1 文档编号:591349899 上传时间:2024-09-17 格式:PPT 页数:34 大小:867.50KB
返回 下载 相关 举报
使用异常处理程序错误和log4j记录错误ppt课件_第1页
第1页 / 共34页
使用异常处理程序错误和log4j记录错误ppt课件_第2页
第2页 / 共34页
使用异常处理程序错误和log4j记录错误ppt课件_第3页
第3页 / 共34页
使用异常处理程序错误和log4j记录错误ppt课件_第4页
第4页 / 共34页
使用异常处理程序错误和log4j记录错误ppt课件_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《使用异常处理程序错误和log4j记录错误ppt课件》由会员分享,可在线阅读,更多相关《使用异常处理程序错误和log4j记录错误ppt课件(34页珍藏版)》请在金锄头文库上搜索。

1、运用异常运用异常运用异常运用异常处处置程序置程序置程序置程序错误错误第四章第四章第四章第四章回想回想什么是常量?什么是常量?Java中,常量的定义规那么有哪些?中,常量的定义规那么有哪些?什么是面向接口编程,它的益处是什么?什么是面向接口编程,它的益处是什么?预习检查预习检查什么是异常?什么是异常?Java中,如何进展异常处置?中,如何进展异常处置?请阐明请阐明throw 与与 throws的区别与联络?的区别与联络?本章义务本章义务晋级晋级HelloACCP,完成如下功能:,完成如下功能:根据课程代码输出课程称号根据课程代码输出课程称号输出各学期平均课时等信息输出各学期平均课时等信息运用运用

2、log4j记录异常日志记录异常日志掌握掌握Java的异常处置机制的异常处置机制运用运用 try 、catch 、 finally 处置异常处置异常运用运用 throw 抛出异常抛出异常运用运用 throws 声明异常声明异常掌握掌握log4j的用法,可以记录异常日志的用法,可以记录异常日志本章目的本章目的生活中的异常生活中的异常正常情况下,小王每日开车去上班,耗时大约正常情况下,小王每日开车去上班,耗时大约30分钟分钟但是,异常情况迟早要发生!但是,异常情况迟早要发生!一路畅通一路畅通堵堵车!撞撞车!程序中的异常程序中的异常public class HelloAccp public stati

3、c void main(String args) System.out.print(请输入入课程代号程代号(1至至3之之间的数字的数字):);Scanner in = new Scanner(System.in);int courseCode = in.nextInt(); / 从从键盘输入整数入整数switch (courseCode) case 1:System.out.println(C#编程程); break;case 2:System.out.println(Java编程程); break;case 3:System.out.println(SQL根底根底); 输入:入:2输出:出:

4、Java编程程输入:入:B程序中断运程序中断运转!正常情况:正常情况:异常情况:异常情况:什么是异常什么是异常异常就是在程序的运转过程中所发生的不正常的事件,它异常就是在程序的运转过程中所发生的不正常的事件,它会中断正在运转的程序会中断正在运转的程序绕行或者等待行或者等待恳求交警求交警处理理异常!异常!面面对异常异常该怎怎样办呢?通常情况下,我呢?通常情况下,我们会会这样处置:置:程序运转程序运转程序中断运转程序中断运转堵堵车!撞撞车!生活中,我生活中,我们会根据不同的异常会根据不同的异常进展相展相应的的处置,置,而不会就此中断我而不会就此中断我们的生活的生活什么是异常处置什么是异常处置Jav

5、a编程言语运用异常处置机制为程序提供了错误处置的编程言语运用异常处置机制为程序提供了错误处置的才干才干程序中程序中预先想好了先想好了 对付异常的付异常的处置方法置方法 异常!异常! 程序运转程序运转处置终了,程序继续运转处置终了,程序继续运转对异常进展处置对异常进展处置Java中如何进展异常处置中如何进展异常处置Java的异常处置是经过的异常处置是经过5个关键字来实现的:个关键字来实现的:try、catch、 finally、throw、throws 捕捕获异常异常 catchtryfinally执行能行能够产生生 异常的代异常的代码 捕捕获异常异常 无无论能否能否发生异常,生异常,代代码总能

6、能执行行手手动抛出异常抛出异常 抛出异常抛出异常 throw声明异常声明异常 声明方法能声明方法能够要要抛出的各种异常抛出的各种异常 throwstry/catch块块7-1trycatch try/catch 块后的代后的代码段段public void method()try / 代代码段段(此此处不会不会产生异常生异常) catch (异常异常类型型 ex) / 对异常异常进展展处置的代置的代码段段/ 代代码段段运用运用try/catch块捕获异常,分为三种情况:块捕获异常,分为三种情况:第一种情况第一种情况 try/catch块块7-2运用例如模拟第一种情况:运用例如模拟第一种情况:pu

7、blic class AccpException public static void main(String args) System.out.print(请输入入课程代号程代号(1至至3之之间的数字的数字):);Scanner in = new Scanner(System.in);try int courseCode = in.nextInt();switch (courseCode) case 1: System.out.println(C#编程程); break;case 2: System.out.println(Java编程程); break;case 3: System.out

8、.println(SQL根底根底); catch (Exception ex) System.out.println(输入不入不为数字数字!);System.out.println(欢迎提出建迎提出建议!);输入:输入:2Java编程程欢迎提出建迎提出建议!控制台输出控制台输出try/catch块块7-3trycatch异常异常类型匹配型匹配 try/catch 块后的代后的代码段段进入入catch块public void method()try / 代代码段段 1 / 产生异常的代生异常的代码段段 2 / 代代码段段 3 catch (异常异常类型型 ex) / 对异常异常进展展处置的代置的

9、代码段段4/ 代代码段段5运用运用try/catch块捕获异常,分为三种情况:块捕获异常,分为三种情况:第二种情况第二种情况 产生异常生异常对象象 程序程序继续执行行异常是一种特殊的对象,类型为异常是一种特殊的对象,类型为java.lang.Exception或其子类或其子类 发生异常try/catch块块7-4运用例如模拟第二种情况:运用例如模拟第二种情况:public class AccpException public static void main(String args) System.out.print(请输入入课程代号程代号(1至至3之之间的数字的数字):);Scanner i

10、n = new Scanner(System.in);try int courseCode = in.nextInt();switch (courseCode) case 1:System.out.println(C#编程程);break;case 2:System.out.println(Java编程程);break;case 3:System.out.println(SQL根底根底); catch (Exception ex) System.out.println(输入不入不为数字数字!); ex.printStackTrace();System.out.println(欢迎提出建迎提出建

11、议!);输入:输入:B输输入不入不为为数字数字!异常堆异常堆栈栈信息信息欢欢迎提出建迎提出建议议!控制台输出控制台输出printStackTrace的堆栈跟踪功能显示出程序运转到当前的堆栈跟踪功能显示出程序运转到当前类的执行流程类的执行流程 public class AccpException public static void main(String args) System.out.print(请输入入课程代号程代号(1至至3之之间的数字的数字):); Scanner in = new Scanner(System.in); try int courseCode = in.nextInt

12、(); /此此处代代码省略省略 catch (Exception ex) System.out.println(输入不入不为数字!数字!); ex.printStackTrace(); System.out.println(欢迎提出建迎提出建议!); try/catch块块7-5java.util.InputMismatchExceptionat java.util.Scanner.throwFor(Scanner.java:840)at java.util.Scanner.next(Scanner.java:1461)at java.util.Scanner.nextInt(Scanner.

13、java:2091)at java.util.Scanner.nextInt(Scanner.java:2050)at s2jsp.sg.ch05.AccpException.main(AccpException.java:23)异常类型异常类型异常堆异常堆栈信息信息在此方法中抛出了异常在此方法中抛出了异常try/catch块块7-6trycatch异常异常类型不匹配型不匹配 try/catch 块后的代后的代码段段程序中断运程序中断运转 发生异常public void method()try / 代代码段段 1 / 产生异常的代生异常的代码段段 2 / 代代码段段 3 catch (异常异常

14、类型型 ex) / 对异常异常进展展处置的代置的代码段段4/ 代代码段段5运用运用try/catch块捕获异常,分为三种情况:块捕获异常,分为三种情况:第三种情况第三种情况 产生异常生异常对象象 try/catch块块7-7运用例如模拟第三种情况:运用例如模拟第三种情况:public class AccpException2 public static void main(String args) System.out.print(请输入入课程代号程代号(1至至3之之间的数字的数字):);Scanner in = new Scanner(System.in);try int courseCod

15、e = in.nextInt();switch (courseCode) case 1: System.out.println(C#编程程); break;case 2: System.out.println(Java编程程); break;case 3: System.out.println(SQL根底根底); catch (NullPointerException ex) System.out.println(输入不入不为数字!数字!);System.out.println(欢迎提出建迎提出建议!);输入:输入:B程序中断运转程序中断运转try/catch/finally 2-1在在try

16、/catch块后参与块后参与finally块,可以确保无论能否发生异块,可以确保无论能否发生异常,常,finally块中的代码总能被执行块中的代码总能被执行try 块 finally 块 catch 块 无异常无异常 有异常有异常 try/catch/finally 2-2 public class AccpException3 public static void main(String args) System.out.print(请输入入课程代号程代号(1至至3之之间的数字的数字):);Scanner in = new Scanner(System.in);try int courseC

17、ode = in.nextInt();switch (courseCode) case 1: System.out.println(C#编程程); break;case 2: System.out.println(Java编程程); break;case 3: System.out.println(SQL根底根底); catch (Exception ex) System.out.println(输入不入不为数字!数字!); finally System.out.println(欢迎提出建迎提出建议!);输入:输入:2Java编程程欢迎提出建迎提出建议!控制台输出控制台输出输入:输入:B输入不

18、入不为数字数字!欢迎提出建迎提出建议!第一种情况:第一种情况:无异常无异常第二种情况:第二种情况:有异常有异常 小结小结 1编写一个类编写一个类ExceptionTest1,在,在main方法中运用方法中运用try、catch、finally:在在try块中,编写被块中,编写被0除的代码除的代码在在catch块中,捕获被块中,捕获被0除所产生的异常,并且打印异除所产生的异常,并且打印异常信息常信息在在finally块中,打印一条语句块中,打印一条语句完好代码实现完好代码实现public void method()try / 代代码段段 / 产生异常生异常(异常异常类型型2) catch (异常

19、异常类型型1 ex) / 对异常异常进展展处置的代置的代码段段 catch (异常异常类型型2 ex) / 对异常异常进展展处置的代置的代码段段 catch (异常异常类型型3 ex) / 对异常异常进展展处置的代置的代码段段/ 代代码段段多重多重catch块块 2-1一段代码能够会引发多种类型的异常一段代码能够会引发多种类型的异常当引发异常时,会按顺序来查看每个当引发异常时,会按顺序来查看每个 catch 语句,并执行语句,并执行第一个与异常类型匹配的第一个与异常类型匹配的catch语句语句执行其中的一条执行其中的一条 catch 语句之后,其后的语句之后,其后的 catch 语句将语句将被

20、忽略被忽略 try 与异常与异常类型型1不匹配不匹配try/catch 块后的代后的代码段段发生异常生异常产生异常生异常对象象catch与异常与异常类型型2匹配匹配catchcatch程序程序继续执行行进入入catch块多重多重catch块块 2-2public class AccpException4 public static void main(String args) Scanner in = new Scanner(System.in);trySystem.out.print(“请输入入S1的的总学学时:);int totalTime = in.nextInt(); /总学学时Sys

21、tem.out.print(“请输入入S1的的课程数目:程数目:);int totalCourse = in.nextInt(); /课程数目程数目System.out.println(“S1各各课程的平均学程的平均学时为: + totalTime / totalCourse); catch (InputMismatchException e1) System.out.println(输入不入不为数字数字!); catch (ArithmeticException e2) System.out.println(课程数目不能程数目不能为零零!); catch (Exception e) Syst

22、em.out.println(发生生错误:+e.getMessage();输入:入:270 H 在安排在安排catch语句的句的顺序序时,首先,首先应该捕捕获最特殊的异常,最特殊的异常, 然后再逐然后再逐渐普通化,即先子普通化,即先子类后父后父类 输出:出:输入不入不为数字数字!进入第一个入第一个catch块输入:入:270 0 输出:出:课程数目不能程数目不能为零零!进入第二个入第二个catch块抛出异常抛出异常假设在当前环境无法处理一个异常,就要将其抛出,把异假设在当前环境无法处理一个异常,就要将其抛出,把异常交给调用者处置常交给调用者处置 public class AccpTeacher

23、 private String id; / 教教员编号,号,长度度应为7 public void setId(String pId) / 判判别教教员编号的号的长度能否度能否为7 if (pId.length() = 7) id = pId; else throw new IllegalArgumentException(参数参数长度度应为7!); public class AccpTeacherTest public static void main(String args) AccpTeacher teacher = new AccpTeacher(); try teacher.setId

24、(088); catch (IllegalArgumentException ex) System.out.println(ex.getMessage(); 抛出异常抛出异常捕获异常捕获异常参数参数长度度应为7!控制台输出控制台输出声明异常声明异常public class AccpTeacher private String id;/ 教教员编号号,长度度应为7 public void setId(String pId) throws IllegalArgumentException / 判判别教教员编号的号的长度能否度能否为7 if (pId.length() = 7) id = pId;

25、else throw new IllegalArgumentException(参数参数长度度应为7!); public class AccpTeacherTest public static void main(String args) AccpTeacher teacher = new AccpTeacher();try teacher.setId(088); catch (IllegalArgumentException ex) System.out.println(ex.getMessage(); 由由调用者捕用者捕获异常异常 声明声明该方法能方法能够会会产生异常生异常 小结小结 2编

26、写类编写类ExceptionTest2:定义两个方法:定义两个方法:go()和和main() 在在go方法中声明要抛出异常,在该方法体内,抛出一方法中声明要抛出异常,在该方法体内,抛出一个个Exception对象对象在在main()方法中,调用方法中,调用go方法,运用方法,运用try/catch捕获捕获go方法中抛出的异常方法中抛出的异常完好代码实现完好代码实现 运用运用log4j记录日志信息记录日志信息public class AccpTeacherTest public static void main(String args) AccpTeacher teacher = new Acc

27、pTeacher(); try teacher.setId(088); catch (IllegalArgumentException ex) System.out.println(ex.getMessage(); 控制台输出控制台输出参数参数长度度应为7! 假设要在控制台与文件假设要在控制台与文件中同时输出错误信息,中同时输出错误信息,该如何处置?该如何处置?运用运用log4j可以可以处理理这个个问题,log4j是一个流行的日志是一个流行的日志记录工具工具 这是运用这是运用log4j后,存储在文本文件中的日志信息后,存储在文本文件中的日志信息 什么是日志什么是日志日志:用来记录一些重要的操作

28、信息日志:用来记录一些重要的操作信息有价值的日志数据可以协助用户提早发现和避开灾难,并有价值的日志数据可以协助用户提早发现和避开灾难,并且找到事件发生的缘由且找到事件发生的缘由 public class AccpTeacherTest public static void main(String args) AccpTeacher teacher = new AccpTeacher(); try teacher.setId(088); catch (IllegalArgumentException ex) System.out.println(ex.getMessage(); 在控制台输出日志

29、在控制台输出日志信息,提示用户出信息,提示用户出现错误的缘由现错误的缘由 如何运用如何运用log4j记录日志记录日志工程工程 属性属性 :弹出工程的属性窗口:弹出工程的属性窗口第一步:在工程中参与第一步:在工程中参与log4j所运用的所运用的jar文件文件Java构建途径构建途径库库添加外部添加外部JAR:弹出选择:弹出选择JAR的窗口的窗口经过选择经过选择JAR的窗口,找到的窗口,找到log4j-1.2.x.jar,并确认,并确认回到工程的属性窗口,点击确定回到工程的属性窗口,点击确定1234演示:在工程中参与演示:在工程中参与log4j所运用的所运用的jar文件文件 如何运用如何运用log

30、4j记录日志记录日志第二步:创建第二步:创建log4j.properties文件文件选择欲运用选择欲运用log4j的工程的工程右键点击右键点击src 新建新建其他其他 :弹出选择导游窗口:弹出选择导游窗口在选择导游窗口中,选择常规在选择导游窗口中,选择常规 文件文件 下一步:弹出新建文件的窗口下一步:弹出新建文件的窗口在新建文件窗口中,输入文件名在新建文件窗口中,输入文件名log4j.properties 完成:创建任务终了完成:创建任务终了123演示:演示:创建建log4j.properties文件文件 如何运用如何运用log4j记录日志记录日志第三步:运用第三步:运用log4j记录日志信息

31、记录日志信息import org.apache.log4j.Logger;public class AccpTeacherLog4j public static void main(String args) AccpTeacher teacher = new AccpTeacher(); Logger logger = Logger.getLogger(AccpTeacherLog4j.class.getName(); try logger.debug(设置教置教员的的编号。号。);teacher.setId(088); catch (IllegalArgumentException ex)

32、logger.info(ex.getMessage(); 获取日志记录器,获取日志记录器,这个记录器将担任这个记录器将担任控制日志信息控制日志信息 运用运用Logger对象的对象的debug、info方法方法输出日志信息输出日志信息 如何运用如何运用log4j记录日志记录日志第四步:编写第四步:编写log4j.properties文件,配置日志信息文件,配置日志信息# 把日志信息把日志信息输出到控制台出到控制台 #log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.o

33、utlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%dyyyy-MM-dd HH:mm:ss %m%n# 把日志信息把日志信息输出到文件:出到文件:accp.log #log4j.appender.file=org.apache.log4j.FileAppenderlog4j.appender.file.File=accp.loglog4j.appender.file.layout=org.apache.log4j.Pattern

34、Layoutlog4j.appender.file.layout.ConversionPattern=%dyyyy-MM-dd HH:mm:ss %l %m%n# 设置置优先先级别、以及、以及输出源出源 #log4j.rootLogger=debug, stdout, file日志信息将写到文件中日志信息将写到文件中 指定日志指定日志输出的文件名出的文件名 指定指定输出格式:出格式:显示日期和示日期和log信息信息 设置置优先先级别为debug、日志被日志被输出到多个出到多个输出源出源 日志信息将写到控制台日志信息将写到控制台 信息打印到信息打印到System.out上上 指定指定输出格式:出

35、格式:显示日期,日志示日期,日志发生位置生位置和日志信息和日志信息 输出源称号输出源称号优先先级从高到低分从高到低分别是是ERROR、WARN、INFO、DEBUG 在此在此处,假,假设优先先级别设为info,那么运用,那么运用debug方法打印的日志信息将不被方法打印的日志信息将不被输出出 如何运用如何运用log4j记录日志记录日志运转效果展现运转效果展现控制台输出效果控制台输出效果包含日期与包含日期与日志信息日志信息文件输出效果文件输出效果包含日期、日志发生位置、与包含日期、日志发生位置、与日志信息日志信息12总结总结请给出以下请给出以下Java代码的运转结果代码的运转结果 public

36、class Test public static void main(String args) new Test().test();public void test() try int arr = new int3;arr3 = 2;System.out.println(try); catch (ArrayIndexOutOfBoundsException e) System.out.println(catch 1); catch (Exception e) System.out.println(catch 2); finally System.out.println(finally);修正修正log4j.properties文件,文件,设置置优先先级为info,在,在控制台以及控制台以及accp.log文件中将会文件中将会输出什么内容?出什么内容?控制台输出控制台输出catch 1finally将只输出运用将只输出运用Logger对象的对象的info方法输出的日志信息方法输出的日志信息 Thank you

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号