第五章 异常

第五章 异常

1.异常

异常是在程序的运行过程中所发生的不正常事件,异常会中断正在运行的程序

2. 异常处理(关键字)

  • 捕获异常(try,catch,finally)

    try{
        //可能发生异常的代码
    }catch(异常类型){
        //异常提示
    }finally{
        //结束 不管如何都会执行的语句
    }
    • 异常类型与所发生的异常不匹配,则会直接终止程序。
    • catch /try 中有 return(终止程序) 时,执行完return 前的代码,先执行 finally 后返回来执行return。
    • 如果是 return 0 (返回值),则finally 里的会直接覆盖其他代码块中的。
  • 声明异常(throws)

    //声明这个方法可能有异常
    public void num() throws Exception{
                    //声明异常,多个异常可用“,”隔开
        //代码块
    }
        

    调用时会报错,解决方法

    • 处理(用try-catch)
    • 往上抛
  • 抛出异常(throw)

    //手动抛出异常
    throw new Exception("......");

    手动抛出异常的所在方法需声明异常/直接处理(用try-catch)

3.异常类型

异常说明
Exception异常层次结构的根类
ArithmeticException算数错误形式,如以零作除数
ArrayIndexOutOfBoundsException数组下标越界
NullPointerException尝试访问null对象成员
ClassNotFoundException不能加载所需的类
InputMismatchException欲得到的数据类型与实际输入的类型不匹配
IllegalArgumentException方法接收到非法参数
ClassCastException对象强制类型转换出错
NumberFormatException数字格式转换异常,如把“abc”转换成数字

4.多重catch块

try{
    
}catch(//异常类型){
    
}catch(//异常类型){
    
}
  • 顺后序:先子类后父类

  • 发生异常时逐个匹配

  • 只执行第一个与异常类型匹配成功的catch语句

5. log4j 日志

//设置Logger输出级别和目的地
log4j.rootLogger=, stdout,logfile
​
//把日志输出到控制台上
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}%l %F %p %m%n
​
//把日志输出到文件上
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=chapter5.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}%l %F %p %m%n
  • 在项目中加入log4j 的JAR文件

  • 创建log4j.properties文件

  • 配置日志信息

    1. 输出级别

      fatal>error>warn>info>debug

      日志记录器将只输出那些级别高于或等于它的信息

    2. 日志输出目的地Appender

      ConsoleAppender:输出日志事件到控制台(stdout)

      FileAppender:输出日志事件到一个文件(logfile)

    3. 日志布局类型Layout

      HTMLLayout:HTML表格

      SimpleLayout:级别Level——日志消息

      PatternLayout:根据指定的转换模式格式化日志输出,需要配置layout.ConversionPattern,否则使用默认转换模式(stdout,logfile)

    4. 转换模式ConversionPattern

      %d:输出日期和时间(%d{yyyy-MM-dd})

      %m:输出代码中指定的消息

      %n:输出一个回车换行符

      %l:输出日志事件发生的位置(包括类名、发生的线程、以及在代码中的行数)

      %P:输出优先级

      %F:输出文件名

      %M:输出方法名

  • 使用log4j记录日志信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值