java异常,和日志

异常处理:

异常是指程序运行过程中所发生的不正常的事件,它会中断正在运行的程序;
异常机制为程序提供了错误处理能力

异常机制:

try catch finally

try 块中的语句正常执行完毕,不会发生异常,那么 cath 块中的所有语句都将会
被忽略;
try 块中语句执行出现异常,而且这个异常与 catch 中声明的异常类型相匹配
,那么 try 块中其余剩下的代码都将被忽略,而相应的catch 块将会被执行;
匹配是指catch所处理的异常类型与声明的异常类型完全一致;
finally 语句无论是否发生异常,finally块中的语句总能被执行;

语法1(没有finally):

try{

//写入可能产生异常的代码;
//如果代码1出现异常,则代码2 3不会执行,直接跳入catch语句;
//如果代码 1 2 3没有发生异常,catch里的语句则不会运行;
代码1;
代码2;
代码3;

} catch (异常类型){ //类型如:Exception e(名字)

//捕获并匹配catch()里的异常类型;
// (名字)e.printStackTrace(); 显示出异常的信息和出现异常的位置;
// System.out.println( e.getMessage() ); 获得异常信息;图一

}
图一:


语法2(有finally语句);

try{

//可能产生异常的代码;

} catch (异常类型){

//捕获并匹配catch()里的异常类型;

} (可以不加finally)finally {

//不管是否出现异常,都会执行finally里的代码;

}

异常类型:



如果想不执行finally里的代码,要在finally前的代码中加入:System.exit(1); 的语句;
一段代码可能会引发多种类型的异常,这时,可以在try语句块后面跟多个catch语句块。多重catch块,分别处理不同
的异常。但排序方式必须是从子类到父类;
当运行时,系统会从上到下分别对每个catch语块的异常类型进行匹配,如果第一个cathc语句的异常类型匹配的话,则执行,而后面的cathc则不执行!

throws:声明并抛出异常
位置在方法名后面 如:public void dive()throws Exception;
如果在方法内抛出一个或多个异常(可以抛出多个异常但是异常类型要用逗号隔开),这时,调用必须try语句进行处理,如果调用者不想处理,那么也要在方法后面声明抛出异常,让java虚拟机进行处理!

throw:手动抛出异常
位置在方法体内;
有些问题系统无法自动发现并解决问题。如输入的年龄不在范围内,此时需要程序员手动抛出异常,再让调用者去解决,使用try进行对throw抛出的异常进行捕获!

throw和throws的区别:
作用:throw用于在程序中抛出异常,throws用于声明在该方法内抛出异常;
使用的位置:throw位于方法内部,可以作为单独语句使用;throws必须跟在方法名后面,不能单独使用
内容:throw只能抛出一个异常对象,throws后面声明异常类型,可以跟多个异常类型(子类在前,父类在后);





log4j配置:

#设置Logger 输出级别和目的地#
log4j.rootLogger = debug,stout,logFile

#把日志信息输出到控制台#
log4j.appender.stout=org.apache.log4j.ConsoleAppender
log4j.appender.stout.Target = System.err
log4j.appender.stout.layout = org.apache.log4j.SimpleLayout

#把日志信息输出到文件夹#
log4j.appender.logFile = org.apache.log4j.FileAppender
log4j.appender.logFile.File = aaa.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

猜你喜欢

转载自1727204629.iteye.com/blog/2404419