四、异常和日志

一、异常

  1. 异常分类
    1、异常的基类:Throwable -->java.lang.Throwable
    2、异常的子类:Error、Exception
    ①Error:一般是我们的代码引起了JVM本身资源耗尽的错误,被称为致命性异常。注意:这种错误是异常机制解决不了的。
    ②Exception:
    编译时异常:编写代码的过程中出现的问题,必须要解决问题。
    运行时异常:程序运行过程中出现的小问题,把异常处理掉,程序还可以往下接着运行。

在这里插入图片描述

  1. 常见的异常:
    算术异常类:ArithmeticExecption
    空指针异常类:NullPointerException
    类型强制转换异常:ClassCastException
    数组负下标异常:NegativeArrayException
    数组下标越界异常:ArrayIndexOutOfBoundsException
    违背安全原则异常:SecturityException
    文件已结束异常:EOFException
    文件未找到异常:FileNotFoundException
    字符串转换为数字异常:NumberFormatException
    操作数据库异常:SQLException
    输入输出异常:IOException
    方法未找到异常:NoSuchMethodException

  2. 异常的处理:
    1、抛出异常:throw、throws
    ①throw表示方法内抛出的某种异常对象,如果不是运行时异常,需要在方法的声明时加上该异常的抛出(throws语句)或者在方法体内部try–catch处理该异常,否则编译报错。
    ②throws用在方法的尾部声明方法内可能要抛出的异常 抛给调用者进行异常处理。如果调用者没有处理可以接着往上抛,一直到jvm虚拟机。直接停止程序。

    2、捕获并解决异常:try-catch
    ①try-catch格式:try { 可能出现异常的代码块 } catch ( Exception e ){ 异常处理 }
    ②多重catch:代码块中可以出现多个异常,通过多个catch捕捉,如果catch中的异常类型满足子父关系,一定要将子类异常放前面。
    ③finally语句:finally是可选的,一般用来关闭资源–>关闭IO流,数据库连接等。
    ④一旦try中的异常对象匹配到某一个catch时,就进入catch中进行异常处理,一旦处理完成,就跳出当前的try-catch结构(在没有写finally的情况下),继续执行后面的代码。
    ⑤在try结构中声明的变量,一旦出了try结构就不能再被调用。

    3、自定义异常:
    作用:java中给我们提供的异常很多,但是有些满足不了我们的需求,所以此时需要我们自己去定义异常。

public void setSex(String sex) throws SexException {
        //设置性别的值只能为男和女
        if("男".equals(sex) || "女".equals(sex)){
            this.sex = sex;
        }else {
            //抛出异常
            throw new SexException("性别输入错误!");
        }
}


public class SexException extends Exception {
	public SexException(String message) {
        super(message);
    }
	//重写printStackTrace()信息,也可以不重写,直接输出错误栈信息
    @Override
    public void printStackTrace() { 
        System.out.println("我自己定义的性别异常");
    }
}

二、日志处理

  1. 概念:用来记录程序中的行踪的
  2. 作用:用来定位和找到问题;
  3. 操作:
    1、导包
    ①右键新建文件夹或包lib
    ②将jar文件拷贝到lib目录中
    ③lib目录上右键–【Add as Library】
    2、添加配置文件
### 把日志信息输出到控制台  ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %m%n
### 把日志信息输出到文件:anbo.log ###
log4j.appender.file=org.apache.log4j.FileAppender
#指定输出目录
log4j.appender.file.File=AAA.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l  %m%n
### 设置优先级别、以及输出源 ###
log4j.rootLogger=info,stdout,file
  1. 注意

    ①日志文件必须以log结尾。
    ②日志的优先级别:debug<info<warn<error
    ③程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值