zoukankan      html  css  js  c++  java
  • java入门第九篇:异常及log4j的使用

    [java的异常]
    1.java中所有异常和错误的基类是Throwable
    *
    * Throwable
    *
    * Error Exception
    * (检查时异常) (运行时异常)
    *
    * 2.java中的异常分为运行时异常和检查时异常。
    * 运行时异常表示RuntimeException以及所有子类,这些异常无需在程序中进行捕获, 大多可以通过代码进行控制避避免。
    * 检查时异常除了RuntimeException以及其所有子类的其他异常,要求必须在程序中捕获处理。
    *
    * 3.自定义异常类,必须继承自现有异常类,通常继承Exception 或者RuntimeException
    * 分别表示声明了一个检查时异常和运行时异常。
    *
    *
    * [使用try catch进行捕获]
    *
    * 1.使用try{}捕获可能会出问题的代码,使用多个catch块进行不同异常的处理操作。
    * 当try块中的程序出现异常时,将进入对应的catch块进行操作,而不再执行try中剩余的代码。
    *
    * !!使用try catch捕获异常后,程序出现异常,将不会阻断程序的运行。
    *
    * 2.catch块可以有多个,一般最后使用Exception作为结束,表示捕获所有异常; catch块在顺序上,必须从小到大。
    *
    * 3. e.getMessage() 拿到错误信息; e.printStackTrace()打印错误的堆栈信息
    *
    * 4.try_catch 为了保证程序不被中断,必须保证能捕获程序中所有异常。
    *
    * 5.finally{}表示程序是否出现异常都必须执行的语句。 通常用于流的关闭,资源释放等操作。 即便块中有return;
    * 也必须执行完finally中的语句。 使用system.exit(int i);程序完全结束,不执行finally。
    *
    * 6.try-finally可以组合存在,而不一定必须包含catch 表示出现异常不进行处理,执行finally中的语句。其他代码无法执行。
    *
    *
    *
    *
    *
    * [throws和throw]
    *
    * 1.在方法体中,如果出现异常,可以不进行try-catch捕获,可使用throws在方法声明上进行抛出;
    * 抛出后,由调用该方法的地方进行捕获,如果不捕获可以继续抛出。
    * 原则上,在main方法中必须进行异常处理,如果继续抛出将导致程序出现异常而无法发现。
    *
    * 2.throws如果抛出多个异常 使用,分隔。
    *
    * 3.throw 在程序中手动抛出异常 public static void setAge(int i){ if(i<0||i>100){
    * throw new IllegalArgumentException("您输入的年龄不合法");
    *
    * 4.如果使用throw抛出的是一个检查型异常,必须在方法体上使用throws抛出异常,
    * 如果使用throw抛出的是一个运行时异常,那么不需要在方法体上抛出异常。
    *
    * 5.如果这个异常 系统没有 throw new RuntimeException("异常"); 或throw new
    * Exception("异常")。 } }
     
    【常用的异常】
    ArithmeticException - 算术运算异常
    NumberFormatException - 数字格式异常
    IndexOutOfBoundsException - 下标越界异常
    NegativeArraySizeException - 创建一个大小为负数的数组错误异常
    NullPointerException - 空指针引用异常
    ClassCastException - 类型强制转换异常。
     
    * [log4j 的使用]
    *
    * 1.导入log4j.jar 再Add
    *
    * 2.在log4j同级目录下创建log4j.propeities
    *
    * 3.在需要打印日志的类中,通过Logger.getLogger(本类名.class)拿到一个日志对象。
    *
    * 4.使用日志对象,分别调用不同级别的打印语句,进行日志的输出。
    * logr.debug("打印一条debug信息");
    logr.info("打印一条info信息");
    logr.warn("打印一条warn信息");
    logr.error("打印一条error信息");
     
    #1.log4j.rootLogger表示总配置
    # log4j.rootLogger=[level],appenderName1(适配器名字),appenderName2.
     
    [level]:ERROR 3
    Warn 4
    INFO 6
    DEBUG 7
    #log4j.rootLogger=设置INFO表示级别大于INFO的都可进行日志输出。
    log4j.rootLogger=debug, logfile,stdout
     
    #2.进行各个适配器的配置,
    # log4j.appender.适配器名字= 为日志指定输出目的地
    # org.apache.log4j.ConsoleAppender(控制台),
    # org.apache.log4j.FileAppender(文件),
    # org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
    # org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
    # org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
    #3.log4j.appender.stdout.Target=设置控制台打印的语句样式(控制台才有)
     
    #4.log4j.appender.logfile.Append = true true,不覆写,false写入时清空文件,再写入。
     
    #5.log4j.appender.logfile.Threshold = DEBUG为当前适配器设置单独的级别。
     
    #6.log4j.appender.logfile.layout=使用哪种布局结构 进行日志显示
    # org.apache.log4j.HTMLLayout(以HTML表格形式布局),
    # org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
    # org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
    # org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
     
    #7.log4j.appender.logfile.layout.ConversionPattern= 设置patternLayout的格式。
    # %m 输出代码中指定的消息
    # %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
    # %r 输出自应用启动到输出该log信息耗费的毫秒数
    # %c 输出所属的类目,通常就是所在类的全名
    # %t 输出产生该日志事件的线程名
    # %n 输出一个回车换行符,Windows平台为“ ”,Unix平台为“ ”
    # %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},输出类似:2002年10月18日 22 : 10 : 28 , 921
    # %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 )
     
    #8.log4j.appender.logfile.MaxFileSize=20MB org.apache.log4j.RollingFileAppender时可以设置文件最大容量。
     
    #90log4j.appender.logfile.MaxBackupIndex=10 org.apache.log4j.RollingFileAppender时可以设置文件最大数量。
  • 相关阅读:
    持续集成(CI)-概念
    python 多个路由参数传递
    python %s 占位符用法
    本地电脑密钥登陆服务器
    nginx 安装及反向代理、负载均衡、静态文件指向、结合uwsgi上线项目、处理跨域问题
    docker 进入容器
    将python文件变成一个shell脚本可执行文件
    python中quote函数是什么意思,怎么用?
    CentOS 使用 runserver 启动服务器后,常驻后台运行
    Open Set Domain Adaptation by Backpropagation(OSBP)论文数字数据集复现
  • 原文地址:https://www.cnblogs.com/lslboy/p/9031669.html
Copyright © 2011-2022 走看看