目录
1.2.2 try...catch...(还不错,但没有第三种好)
1.异常
1.1 异常体系结构
———————————————————————————————————————————
1.2 编译时异常的处理方式
1.2.1 throws(不推荐使用)
原理:不断往上抛异常不解决,直至抛到虚拟机导致程序死亡。
示例:
———————————————————————————————————————————
1.2.2 try...catch...(还不错,但没有第三种好)
示例:
———————————————————————————————————————————
1.2.3 前两种结合(最规范)
相比起第二种优势在于知道底层的调用情况
示例:
———————————————————————————————————————————
1.3 运行时异常的处理方式
示例:
———————————————————————————————————————————
1.4 增加程序健壮性的异常案例
原理:防止用户乱输入导致程序崩溃
———————————————————————————————————————————
1.5 自定义异常
throw是在方法内部直接创建一个异常对象并从此点抛出。
throws是用在方法声明上的,用于抛出方法内部的异常。
1.5.1 自定义编译时异常
自定义编译时异常继承自Exception类,在编译阶段就会报错。
示例:
————————
———————————————————————————————————————————
1.5.2 自定义运行时异常
自定义运行时异常继承自RuntimeException类,使用方式与自定义编译时异常一致,区别只在于只在程序运行时出现错误才报错。
示例:
———————————————————————————————————————————
2.日志
2.1 日志技术体系结构和框架(主要学Logback)
———————————————————————————————————————————
2.2 logback使用
拷贝jar包到lib文件夹之后选中三个jar包右键Add as Library...添加到依赖库,之后点击“ok”,如图所示:
一个简单的Logback日志搭建案例:
———————————————————————————————————————————
2.3 Logback.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_HOME" value="E:/log" />
<!-- 控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!-- 日志输出编码 -->
<Encoding>UTF-8</Encoding>
<layout class="ch.qos.logback.classic.PatternLayout">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
</pattern>
</layout>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Encoding>UTF-8</Encoding>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/myApp.log.%d{yyyy-MM-dd}.log</FileNamePattern>
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
</pattern>
</layout>
<!--日志文件最大的大小,超过了就会新建日志文件来记录新的日志信息-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>1MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!-- level用来设置输出级别,若设为WARN,则大于等于WARN级别的日志信息都会输出 -->
<!-- 输出级别从小到大依次为 TRACE,DEBUG,INFO,WARN,ERROR(可以忽略大小写),默认为DEBUG ALL为所有级别全部输出,OFF为所有级别都不输出 -->
<root level="ALL">
<!-- 设置控制台输出 -->
<appender-ref ref="CONSOLE" />
<!-- 设置日志文件输出 -->
<appender-ref ref="FILE" />
</root>
</configuration>