java学习第三天(4)

一、异常 所有在成员方法中声明throw exception的方法,在调用后都必须处理异常,也可以在调用函数中再抛出,最后在main()方法中处理,如果只做测试用,main()方法中也可以抛出异常。所有异常都继承自object->Throwable->Exception。

二、使用try{...}catch{...}捕获并处理异常,多个catch语句时有短路效应,只会执行一个,要将子类放在最上面。如果有几种异常处理程序是一样的,可以使用catch(NullPointerException | IlleagargumentException)使用|符号,如果所有catch语句或者有无异常最后都需要需要某些东西,可以在最后面加一条finally{}语句块,结果为try{} catch{...} finally{...} finally可写可不写,总是最后执行。在catch{}语句块中抛出异常,会先处理finally语句块,然后抛出异常

三、抛出的异常Exception对象可以直接使用println()打印(因为每个对象都有继承自object的toString() 所有每个对象都可以打印),也可以调用它的printStackTrace()打印出方法的调用栈的路径。Exception对象构造时可以传入一个字符串,直接打印他时会显示出这条信息。

四,抛出一个异常,可以在调用函数时,对该异常进行转换,如果将该异常做为对象进行构造调用函数要抛出的异常,就不会丢失原始异常信息。 异常类的成员方法getCause();可以获取原始异常,结果为null,则已经是根异常。一个方法只能抛出一个异常,如果在finally()语句中抛出了异常,其他异常就无法抛出,也就叫异常屏蔽。也可以用过异常类的成员方法addSuppressed()把其他异常加进去,再抛出,这样就保留了全部的异常信息,getSuppressed()可以获得子异常。

五、可以自定义异常类型,一般是建立一个继承自RuntimeException的BaseException,其他的业务异常从此派生,自定义的baseException应提供多个构造方法。

六、assert 断言,断言一个表达式为true,如果为false,会抛出异常AssertionError assert X>=0 ,也可以附加一条字符串作为提示信息,如assert X>=0 : "x必须大于0"; 断言发生错误时会直接退出程序,无法实现栈解退,只能用于开发和调试。

七、commons logging最广泛的日志模块,充当接口,调用实现,会调用java自身的日志api或者log4j的api,Log log=logFactory.getLog();可以传入一个字符串,也可以是一个类的类信息。

八、Log4j,需要将一个log4j2.xml文件在到相应的文件路径下,就可以让log4j读取配置文件并按照配置来输出日志,下载Log4j的日志并把相应jar包加入项目中就行。

九、SLF4J加Logback,这两者搭配,和common logging 搭配log4j2是一样的,前者效果可能好一些,是更新的方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值