zoukankan      html  css  js  c++  java
  • Java基础学习补充 -- 异常处理和log4j日志

    Java中的异常处理

    异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。

    Java中所有异常的基类Throwable:Throwable又分为Error类和Exception类。

    错误:Error类以及他的子类的实例,代表了JVM本身的错误。错误不能被程序员通过代码处理,Error很少出现。

    异常:Exception以及他的子类,代表程序运行时发送的各种不期望发生的事件。可以被Java异常处理机制使用。Exception又分为检查时异常和运行时异常(RuntimeException)

    检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。

    运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。

    Java中的异常分为运行时异常和检查时异常,运行时异常表示RuntimeException以及子类,这些异常无需在程序中进行捕获,大多可以通过代码进行控制避免,检查时异常包过除运行时异常表示RuntimeException以及子类以外其他所有异常,这些异常需要在程序中进行捕获处理。

    异常捕获

    1.使用:使用 try/catch 关键字可以捕获异常。try/catch 代码块放在异常可能发生的地方。使用Try捕获可能出现异常的代码,使用catch块进行不同异常操作的处理,当try块中的程序出现异常时,将进入对应的catch代码块进行操作,而不再执行try块中剩余的代码。

    使用try/catch捕获异常后,如果程序出现异常,将不会阻断程序的运行。

    2.写法:

    try{
       // 可能出现异常的代码块
    }catch(ExceptionName1 e1){
       //Catch块
    }catch(ExceptionName1 e2){
    //Catch块
    }

    注意:一个 try 代码块后面跟随多个 catch 代码块,一般最后使用Exception作为结束,表示捕获所有异常,但是如果要使用多个catch,那么Exception异常就不能放在要捕获的具体异常之前。

    3.常用方法:e1.printStackTrace():打印堆栈信息;e1.getMessage():获得错误信息

    try/catch如果需要确保程序能够不被中断,必须确保catch快能够捕获程序中可能出现的所有异常

    finally:表示无论程序是否出现异常,哪怕try中出现了return语句,也必须执行完finally才能结束当前方法。

    finally块不管异常是否发生,只要对应的try执行了,则它一定也执行。只有一种方法让finally块不执行:System.exit()。因此finally块通常用来做资源释放的操作:如关闭I/O流,关闭数据库连接等等。

    try{
      // 程序代码
    }catch(异常类型1 异常的变量名1){
      // 程序代码
    }catch(异常类型2 异常的变量名2){
      // 程序代码
    }finally{
      // 程序代码
    }

    注意:一个try至少要有一个catch块,否则, 也要至少要有1个finally块,才能构成一个捕获异常的语句。

    抛出异常

    如果一个方法出现了异常而没有捕获(检查性异常),那么该方法必须使用 throws 关键字来声明,将异常抛出,抛出后,由调用该方法的地方进行捕获异常,如果不想捕获可以继续抛出。原则上,在main方法中如果出现了异常,不建议再抛出,如果抛出,则可能导致程序无法正常运行。
    throws 关键字放在方法名的尾部,如果抛出多个异常,异常之间使用逗号分割。

    也可以使用 throw 关键字抛出一个异常,即,在程序中手动抛出异常,无论它是新实例化的还是刚捕获到的。

    如果使用throw抛出的是一个检查型异常,那么必须使用throws抛出声明,如果使用throw抛出的是一个运行时异常,那么不必再使用throws进行抛出声明。

    自定义异常

    自定义异常类,必须基础现有的异常类
    通常继承Exception 或者 RuntimeException,分别表示声明了一个检查时异常和一个运行时异常。
    并且重写其getMessage()方法。

    Log4j日志的使用

    log4j的使用:
    1、导入log4j.jar
    2、在src同级下创建log4j.propetites配置文件
    3、在需要打印日志的类中通过Logger.getLogger()拿到一个日志对象
    4、分别调用不同局级别的打印语句,进行日志的输出

    log4j的配置文件的设置:http://www.blogjava.net/zJun/archive/2006/06/28/55511.html

     1 public class Demo03_log4j {
     2 
     3     /**
     4      * 通过Logger.getLogger拿到log对象,参数传入本类的class
     5      * 
     6      * log4j的使用:
     7      *        1、导入log4j.jar
     8      *        2、在src的目录下(与包同级)创建log4j.propetites配置文件
     9      *        3、在需要打印日志的类中通过Logger.getLogger()拿到一个日志对象
    10      *        4、分别调用不同局级别的打印语句,进行日志的输出
    11      */
    12     static Logger log = Logger.getLogger(Demo03_log4j.class);
    13     
    14     public static void main(String[] args) {
    15         //打印一条错误信息
    16         log.error("打印一条错误信息");
    17         //打印一条警告信息
    18         log.warn("打印一条警告信息");
    19         //打印一条info信息
    20         log.info("打印一条info信息");
    21         //打印一条测试信息
    22         log.debug("打印一条测试信息");
    23     }
    24 }
  • 相关阅读:
    ps中的一些方法
    extjs 横向滚动条 和 本地排序
    JS JSON.parse() 和 JSON.stringify()
    SQL 同一个表中 根据一列更新另一列(不同行)
    extjs2.2 panel加背景色
    extjs2.2 combo的监听
    ExtJS2.2 form表单提交时不提交emptyText
    Extjs 复制对象
    Extjs 显示或隐藏滚动条
    Extjs2.2 开始时间,结束时间,工期 联动(选二补一),包含日期,天数的互转
  • 原文地址:https://www.cnblogs.com/JiangLai/p/8905844.html
Copyright © 2011-2022 走看看