异常、log4j的使用和处理
异常
java中代码运行时出现的问题大致分为两类:
错误:error
语法逻辑导致的程序运行问题
异常:exception
基于java健壮性有代码书写、运行时进行提升的异常
Java异常是一个描述在代码段中发生的异常(也就是运行时出错)情况的对象。当异常情况发生,一个代表该异常的对象被创建并且在导致该错误的方法中被引发(throw,或称为抛出)。该方法可以选择自己处理异常或传递该异常。
如果进行了异常的处理那么,在出现异常时不会终止程序的运行
异常体系结构
java把各种不同类型的异常情况进行分类,用Java类来表示异常情况,这种类被称为异常类。把异常情况表示成异常类,可以充分发挥类的可扩展和可重用的优势。
异常的分类
①编译时异常(受检异常)
由java虚拟机在程序编写时进行健壮性检查,当某一方法可能出现问题是需要显式的解决后才能继续编写
②运行时异常(非受检异常)
由java虚拟机在程序运行时进行健壮性操作,当某一方法执行过程中出现不正当操作时出现提示,无需显式解决
异常的处理
由五个关键字 try、catch、throw、throws 和 finally 处理。
Java 中可用于处理异常的两种方式:
自行处理:可能引发异常的语句封入在 try 块内,而处理异常的相应语句则封入在 catch 块内。
使用try catch finally关键字进行异常处理
SimpleDateFormat sdf = new SimpleDateFormat("asdasd");try {// 使用try{}包裹可能出现问题的代码System.out.println(sdf.parse("2021"));// 当发生异常时会创建相应的异常对象} catch (ParseException e) {System.err.println("解析错误!");// catch(异常)// 与try块内生成的异常进行比较匹配则执行相应代码return;} finally {// 最终执行// 写在finally中的代码无论是否发生异常都会执行//常用来释放资源System.out.println("最终执行");}
异常类常用方法
回避异常:通知潜在调用者,如果发生了异常,必须由调用者处理。
在发生异常的方法上使用throws关键字进行异常的抛出,谁调用这个方法谁处理
public static void main(String[] args) throws ParseException {
//方法中出现throws以及异常类代表这个方法执行时可能出现的异常,需要调用方进行处理
自定义异常
自定义的异常类是由开发人员根据需求开发的异常类.
程序中使用自定义的异常类,通过自定义异常类可以让开发人员更加方便的定位程序出错的位置且更加详细的描述异常信息。
异常简单分为两类,那么自定义异常也简单分为两类:
自定义受检异常
创建类继承Exception
//自定义受检异常
//创建自定义异常类继承Exception
public class MyException extends Exception {// 创建有参构造方法将异常信息传入异常类// 调用父类构造方法传入数据public MyException(String msg) {super(msg);}
}
自定义运行时异常
创建类继承RunTimeException
//自定义运行时异常
//创建自定义异常类继承RuntimeException
public class MyRuntimException extends RuntimeException{// 创建有参构造方法将异常信息传入异常类// 调用父类构造方法传入数据public MyRuntimException(String msg) {super(msg);}
}
Log4j的使用
log日志
在程序运行过程中,对客户以及程序执行过程的展示并进行记录的过程称之为日志
通常与异常一同使用用于记录程序执行时出现的问题,便于维护人员对程序进行维护
Log4j是java中对于日志操作最基础也是最常用的工具类之一,使用配置文件的形式。操控日志输出位置、输出格式、输出级别。
log4j的使用
log4j是额外工具类(在安装jdk并没有提供)需要手动安装
1.获取工具类
log4j.jar:log4j使用包含的所有类、包
本质上是已经编译好的java文件可以直接使用
2.在开发工具类导入工具类jar包
将jar包复制到工程的src,右键build path->add to build path
3.书写配置文件
在src下创建文件夹log4j.properties按照log4j书写配置文件
log4j.rootLogger =ALL,systemOut
#输出到控制台
#指定输出位置
log4j.appender.systemOut = org.apache.log4j.ConsoleAppender
#配置日志信息的格式
log4j.appender.systemOut.layout = org.apache.log4j.PatternLayout
#自定义格式
log4j.appender.systemOut.layout.ConversionPattern = [%-5p][%-22d{yyyy/MM/dd HH:mm:ssS}][%l]%n%m%n
#输出级别
log4j.appender.systemOut.Threshold = ERROR
#ImmediateFlush = TRUE:默认值是true,所有的消息都会被立即输出
log4j.appender.systemOut.ImmediateFlush = TRUE log4j.appender.systemOut.Target = System.out
4.使用
// logger没有构造方法通过静态getLogger方法获取Logger log = Logger.getLogger(Test.class);// log4j常用日志生成方法//对象名.日志级别(日志信息)log.debug("debug日志信息");log.info("info日志信息");log.warn("warn日志信息");log.error("error日志信息");
Log4J配置文件
#1书写根标签多个输出只需要一个根标签
log4j.rootLogger = [All],systemOut
#2配置输出位置
log4j.appender.systemOut =org.apache.log4j.ConsoleAppender
#3根据输出位置配置额外书写
log4j.appender.systemOut.Threshold=DEBUG
log4j.appender.systemOut.ImmediateFlush=TRUE
log4j.appender.systemOut.Target=System.out
#4配置输出样式
log4j.appender.systemOut.layout =org.apache.log4j.PatternLayout
#额外配置输出格式
log4j.appender.systemOut.layout.ConversionPattern=[%-5p][%d{yyyy-MM-dd HH:mm:ss,SSS}][%l]%m%n
异常、log4j的使用和处理相关推荐
- log4j输出系统抛出的异常
log4j输出系统抛出的异常 log4j.xml配置文件详解 Appender log4j日志输出位置 log4j日志等级 日志输出格式 logger root java代码中的配置 log4j.xm ...
- log4j简介及应用
一.介绍 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务 器.NT的事件记录器.UNIX Syslog守 ...
- [Java,MVC] Eclipse下搭建Spring MVC
转自:http://blog.csdn.net/blue_jjw/article/details/8752466 一.新建Dynamic Web Project 一个web工程最基本的,只看3个地方, ...
- 【java】兴唐第二十五节课(异常和log4j的使用)
异常 1.try catch finally语法(附带多重catch) 代码实现: public static void main(String[] args) {try {int i = 1/0;} ...
- JavaWeb项目异常管理之log4j的使用教程
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6399191.html 在项目中的应用见: https://github.com/ygj0930/CoupleS ...
- Log4j显示异常的奇怪问题
为什么80%的码农都做不了架构师?>>> 由一个项目中的log4j工作异常,没有安log4j.properties来显示,检查搜索了半天,发现原来一个jar中包含一个log4j ...
- Log4j MDC Tomcat下报异常org.apache.log4j.helpers.ThreadLocalMap
严重: The web application [/qdgswx] created a ThreadLocal with key of type [org.apache.log4j.helpers.T ...
- java运行异常日志_使用log4j记录Java中的运行时异常
小编典典 我不确定这是否是您要寻找的,但是有一个终止线程的异常处理程序.它是线程异常未明确捕获的任何异常的处理程序. 默认"未捕获的异常处理程序"只是调用printStackTra ...
- log4j记录exception异常有价值信息及log4j级别
try{}catch(Exception e){e.printStackTrace();log.error("配件导出excel错误:", e.fillInStackTrace() ...
- log4j.properties配置与将异常输出到Log日志文件实例
将异常输出到 log日志文件 实际项目中的使用: <dependencies><dependency><groupId>org.slf4j</groupId& ...
最新文章
- 12日疯人认证百度云_百度云智峰会12月17日召开,央视财经对话现场要做一场高端访谈...
- Oracle442个应用场景-----------Oracle数据库物理结构
- linux 查询系统性能,Linux 系统各种性能查询
- 接上文 VM安装的ubuntu系统,配置双网卡
- Java 平台有哪几个版本?
- 获取会话名称时错误 5_2019Java面试宝典系列|基础篇5
- Win11应用商店打不开怎么办?
- openStack4j网络增删改查
- 多米诺骨牌java_通过递归和回溯找到所有可能的多米诺骨牌链
- VVC/JEM代码学习12:transformNxN
- 【Unity3D】Unity3D 软件安装 ( 注册账号并下载 Unity Hub | 安装 Unity Hub | 获取个人版授权 | 中文环境设置 | 安装 Unity3D 编辑器 )
- 分享即时通讯开发之实时音视频技术基础知识
- 大家都在学C语言吧,作为程序员这有一个问题,秃顶算工伤吗?
- 支持向量机(SVM)——线性支持向量机
- 基于java家庭理财记账系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
- python用pandas读取excel_浅谈python之利用pandas和openpyxl读取excel数据
- 《怪诞行为学2-非理性的积极力量》读书笔记
- Flask上下文管理源码--亲自解析一下
- BZOJ1455: 罗马游戏
- linux内核是用什么语言编写的?