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

上传人:max****ui 文档编号:8367209 上传时间:2020-03-28 格式:PPT 页数:34 大小:3.07MB
返回 下载 相关 举报
使用异常处理程序错误和log4j记录错误.ppt_第1页
第1页 / 共34页
使用异常处理程序错误和log4j记录错误.ppt_第2页
第2页 / 共34页
使用异常处理程序错误和log4j记录错误.ppt_第3页
第3页 / 共34页
点击查看更多>>
资源描述
使用异常处理程序错误 第四章 回顾 什么是常量 Java中 常量的定义规则有哪些 什么是面向接口编程 它的好处是什么 预习检查 什么是异常 Java中 如何进行异常处理 请说明throw与throws的区别与联系 本章任务 升级HelloACCP 完成如下功能 根据课程代码输出课程名称输出各学期平均课时等信息使用log4j记录异常日志 掌握Java的异常处理机制运用try catch finally处理异常运用throw抛出异常运用throws声明异常掌握log4j的用法 能够记录异常日志 本章目标 生活中的异常 正常情况下 小王每日开车去上班 耗时大约30分钟 但是 异常情况迟早要发生 一路畅通 堵车 撞车 程序中的异常 publicclassHelloAccp 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程序中断运行 正常情况 异常情况 什么是异常 异常就是在程序的运行过程中所发生的不正常的事件 它会中断正在运行的程序 绕行或者等待 请求交警解决 异常 面对异常该怎么办呢 通常情况下 我们会这样处理 程序运行 程序中断运行 堵车 撞车 生活中 我们会根据不同的异常进行相应的处理 而不会就此中断我们的生活 什么是异常处理 Java编程语言使用异常处理机制为程序提供了错误处理的能力 程序中预先想好了对付异常的处理办法 异常 程序运行 处理完毕 程序继续运行 对异常进行处理 Java中如何进行异常处理 Java的异常处理是通过5个关键字来实现的 try catch finally throw throws 捕获异常 catch try finally 执行可能产生异常的代码 捕获异常 无论是否发生异常 代码总能执行 手动抛出异常 抛出异常 throw 声明异常 声明方法可能要抛出的各种异常 throws try catch块7 1 try catch try catch块后的代码段 publicvoidmethod try 代码段 此处不会产生异常 catch 异常类型ex 对异常进行处理的代码段 代码段 使用try catch块捕获异常 分为三种情况 第一种情况 try catch块7 2 使用示例模拟第一种情况 publicclassAccpException 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 欢迎提出建议 输入 2 Java编程欢迎提出建议 控制台输出 try catch块7 3 try catch 异常类型匹配 try catch块后的代码段 进入catch块 publicvoidmethod try 代码段1 产生异常的代码段2 代码段3 catch 异常类型ex 对异常进行处理的代码段4 代码段5 使用try catch块捕获异常 分为三种情况 第二种情况 产生异常对象 程序继续执行 异常是一种特殊的对象 类型为java lang Exception或其子类 发生异常 try catch块7 4 使用示例模拟第二种情况 publicclassAccpException 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 输入不为数字 异常堆栈信息欢迎提出建议 控制台输出 printStackTrace的堆栈跟踪功能显示出程序运行到当前类的执行流程 publicclassAccpException 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 5 try catch块7 6 try catch 异常类型不匹配 try catch块后的代码段 程序中断运行 发生异常 publicvoidmethod try 代码段1 产生异常的代码段2 代码段3 catch 异常类型ex 对异常进行处理的代码段4 代码段5 使用try catch块捕获异常 分为三种情况 第三种情况 产生异常对象 try catch块7 7 使用示例模拟第三种情况 publicclassAccpException2 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 程序中断运行 try catch finally2 1 在try catch块后加入finally块 可以确保无论是否发生异常 finally块中的代码总能被执行 try块 finally块 catch块 无异常 有异常 try catch finally2 2 publicclassAccpException3 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 欢迎提出建议 输入 2 Java编程欢迎提出建议 控制台输出 输入 B 输入不为数字 欢迎提出建议 第一种情况 无异常 第二种情况 有异常 小结1 编写一个类ExceptionTest1 在main方法中使用try catch finally 在try块中 编写被0除的代码在catch块中 捕获被0除所产生的异常 并且打印异常信息在finally块中 打印一条语句 完整代码实现 publicvoidmethod try 代码段 产生异常 异常类型2 catch 异常类型1ex 对异常进行处理的代码段 catch 异常类型2ex 对异常进行处理的代码段 catch 异常类型3ex 对异常进行处理的代码段 代码段 多重catch块2 1 一段代码可能会引发多种类型的异常当引发异常时 会按顺序来查看每个catch语句 并执行第一个与异常类型匹配的catch语句执行其中的一条catch语句之后 其后的catch语句将被忽略 try 与异常类型1不匹配 try catch块后的代码段 发生异常 产生异常对象 catch 与异常类型2匹配 catch catch 程序继续执行 进入catch块 多重catch块2 2 publicclassAccpException4 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块 抛出异常 如果在当前环境无法解决一个异常 就要将其抛出 把异常交给调用者处理 publicclassAccpTeacher privateStringid 教员编号 长度应为7publicvoidsetId StringpId 判断教员编号的长度是否为7if pId length 7 id pId else thrownewIllegalArgumentException 参数长度应为7 publicclassAccpTeacherTest publicstaticvoidmain String args AccpTeacherteacher newAccpTeacher try teacher setId 088 catch IllegalArgumentExceptionex System out println ex getMessage 抛出异常 捕获异常 参数长度应为7 控制台输出 声明异常 publicclassAccpTeacher privateStringid 教员编号 长度应为7publicvoidsetId StringpId throwsIllegalArgumentException 判断教员编号的长度是否为7if pId length 7 id pId else thrownewIllegalArgumentException 参数长度应为7 publicclassAccpTeacherTest publicstaticvoidmain String args AccpTeacherteacher newAccpTeacher try teacher setId 088 catch IllegalArgumentExceptionex System out println ex getMessage 由调用者捕获异常 声明该方法可能会产生异常 小结2 编写类ExceptionTest2 定义两个方法 go 和main 在go方法中声明要抛出异常 在该方法体内 抛出一个Exception对象在main 方法中 调用go方法 使用try catch捕获go方法中抛出的异常 完整代码实现 使用log4j记录日志信息 publicclassAccpTeacherTest publicstaticvoidmain String args AccpTeacherteacher newAccpTeacher try teacher setId 088 catch IllegalArgumentExceptionex System out println ex getMessage 控制台输出 参数长度应为7 如果要在控制台与文件中同时输出错误信息 该如何处理 使用log4j可以解决这个问题 log4j是一个流行的日志记录工具 这是使用log4j后 存储在文本文件中的日志信息 什么是日志 日志 用来记录一些重要的操作信息有价值的日志数据能够帮助用户提前发现和避开灾难 并且找到事件发生的原因 publicclassAccpTeacherTest publicstaticvoidmain String args AccpTeacherteacher newAccpTeacher try teacher setId 088 catch IllegalArgumentExceptionex System out println ex getMessage 在控制台输出日志信息 提示用户出现错误的原因 如何使用log4j记录日志 项目 属性 弹出项目的属性窗口 第一步 在工程中加入log4j所使用的jar文件 Java构建路径 库 添加外部JAR 弹出选择JAR的窗口 通过选择JAR的窗口 找到log4j 1 2 x jar 并确认 回到项目的属性窗口 点击确定 1 2 3 4 演示 在工程中加入log4j所使用的jar文件 如何使用log4j记录日志 第二步 创建log4j properties文件 选择欲使用log4j的项目 右键点击src 新建 其他 弹出选择向导窗口 在选择向导窗口中 选择常规 文件 下一步 弹出新建文件的窗口 在新建文件窗口中 输入文件名log4j properties 完成 创建工作结束 1 2 3 演示 创建log4j properties文件 如何使用log4j记录日志 第三步 使用log4j记录日志信息 importorg apache log4j Logger publicclassAccpTeacherLog4j publicstaticvoidmain String args AccpTeacherteacher newAccpTeacher Loggerlogger Logger getLogger AccpTeacherLog4j class getName try logger debug 设置教员的编号 teacher setId 088 catch IllegalArgumentExceptionex logger info ex getMessage 获取日志记录器 这个记录器将负责控制日志信息 使用Logger对象的debug info方法输出日志信息 如何使用log4j记录日志 第四步 编写log4j properties文件 配置日志信息 把日志信息输出到控制台 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 日志被输出到多个输出源 日志信息将写到控制台 信息打印到System out上 指定输出格式 显示日期 日志发生位置和日志信息 输出源名称 优先级从高到低分别是ERROR WARN INFO DEBUG在此处 如果优先级别设为info 那么使用debug方法打印的日志信息将不被输出 如何使用log4j记录日志 运行效果展示 控制台输出效果 包含日期与日志信息 文件输出效果 包含日期 日志发生位置 与日志信息 1 2 总结 请给出下列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 修改log4j properties文件 设置优先级为info 在控制台以及accp log文件中将会输出什么内容 控制台输出 catch1finally 将只输出使用Logger对象的info方法输出的日志信息 Thankyou
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!