Java 异常处理-(第三天)

Java 异常处理-(第三天)

一、异常

计算机程序运行的过程中,错误总会出现。
网络错误,内存耗尽,无法连接打印机
方法调用出现错误时,可以进行给定返回错误
异常是class,是一种类型信息。采用上次捕获,方法调用分析。

Object->Throwable->Error/Exception->RuntimeException/IOException
Error是发生严重错误,程序一般无能为力。(网络错误,内存耗尽等)
Checked Exception逻辑错误是必须处理的,包括捕获并处理错误和修复错误。
捕获异常

try{
//执行的语句
}catch(Exception e){
//捕获对应的异常
}

不捕获异常

throws Exception{}//声明异常

main()方法是捕获异常的最后一步,如果不捕获异常,JVM会关闭退出程序

二、捕获异常

try{
//可能发生异常的语句
}catch(Exception e){
//捕获对应的异常Exception及其子类,多个catch(){}语句需要考虑子类的顺序,子类必须写在前面。
}finally{
//不管有无异常都会执行
}

若异常间不存在继承关系,必须编写多条catch语句,异常间使用‘|’或符号

catch(IOException | NumberFormatException e){}//JDK版本>=1.7

三、抛出异常

catch(Exception e){
	e.printStackTrace();//打印出方法的调用栈
}

异常是一个class

throw new Exception(e);//抛出异常

==如果finally语句抛出了异常,则catch语句不再抛出。(被屏蔽)

四、自定义异常

extends Exception{}
//子类覆写父类创建多个构造函数

五、使用断言(一般不会使用)

断言是一种程序调试方式,使用assert关键字修饰。

assert x >= 1;//如果断言失败,抛出AssertionError导致程序结束退出

对于可恢复的程序错误,不应该使用断言。
断言只应该适用于开发和测试阶段

六、使用JDK Logging

日志(logging)取代System.out.println(),可以设置输出格式,输出级别,可重定向到文件,按包名控制日志级别(七个日志级别)。

Logger logger = Logger.getGlobal();
logger.info("abc");//输出信息
logger.setLevel(Level.WARNING);
logger.log(Level.WARNING,"warning...",e);//设置级别,输出信息
logger.warn("def");//警告信息

七、使用Commons Logging(推荐使用)

Apache创建的日志模块。可以挂接不同的日志系统,通过配置文件制定挂接的日志系统,自动搜索并使用Log4j,如果没有就使用JDK Logging。(六个日志级别)

Log log = LoggerFactory.getLogger(Main.class);//Main类获取日志实例
log.info("abc");
log.warn("def");

八、使用Log4j(推荐使用)

Log4j是当前最流行的日志框架。
Appender/Filter(过滤)/Layout(格式化信息)
可以输出到Console(屏幕)/File(文件)/Socket(远程)

发布了44 篇原创文章 · 获赞 0 · 访问量 1414

猜你喜欢

转载自blog.csdn.net/weixin_44872254/article/details/104655234