java学习笔记(3)异常

1.什么是异常?
即在编码过程中出现不符合规定的错误称之为异常,举例好比一段代码中要进行算法,我们定义成了int类型,最后在输入的时候输入了中文一类不符合规定导致错误的称为异常。
2.java常用的处理异常的异常类有哪些?
在java中有一些是专门来处理这些异常情况的,他们被称为异常类,异常类里面有个“祖先级别的”Exception:啥都能干,他处于异常继承关系中的最顶层。
ArithmeticException:算术错误,例如:零作除数
IndexOutOfBoundsException:下标越界
NullPointerException:访问null对象成员
ClassNotFoundException:不能加载所需的类
InputMismatchException:欲得到的数据类型与实际输入类型不匹配
IllegalArgumentException:方法接收到非法参数
ClassCastException:对象强制类型转换出错
SQLException:数据库操作异常
FileNotFoundException:File类的异常
IOException:IO异常
Exception:他是什么都可以处理异常,为什么有了他还会有其他那么多类呢,想一下,如果有个数据库可能会出现的问题还有个算术也有可能出现的问题,如果我们有Exception处理也可以,但是这个时候我们就不能准确的知道到底是那个地方出现了问题,之所以有这么多子类异常类就是为了能够让我们明白我们的异常出现在哪里
3.如何进行异常处理?
(1)try:我们通常把可能出现问题的代码放到try块中。
(2)catch:如果try块中的代码在执行过程中,真的出现了异常,则catch用来捕获这个异常,从而让系统恢复正常不至于崩溃;如果try块中没有出现异常,则catch块中的代码,不会被执行。你可以认为catch是一个消防部门。
(3)finally:try块或catch块的代码执行后,如果存在finally块,则执行此块中代码。
(4)throw:程序员可以利用此关键字来自己抛出一个异常。在某些时候是非常有必要的。
(5)throws:用在方法前声明此方法可能会产生某种类型异常,它强制要求方法的调用者必须用try-catch来处理。
一般自己处理异常的时候 try和catch或者finally要在一块,单独try是不可以出现的,必须要结合catch或者finally才可以处理
throws:这个异常是在这个方法上加上throws+异常类,通常是出现有异常但没有能力或者本身不愿意处理这个异常
throw:这个异常通常是自己手动抛出异常的,就是程序会默认你写的代码是正确的,但是有的时候你想要的代码效果是指定的,如果是非指定的让他报错,我们可以使用throw,例如编写一个性别的代码,你只想让输入者输入男或女,这时如果没有手动抛异常,你随便输了个字这时系统会默认正确然后输出但是跟你想要的效果不一样,这时就加上throw+new +异常类 到时候出现我们不想要的效果系统就会出异常提示。
4.log4j日志工具
推荐一个log4j日志工具,之所以要用这个日志工具是为什么呢,因为假如有一天我们将我们自身精心编写的程序放到了服务器上的时候,大部分的时间都会很正常,但是在某些时候某些业务在处理的时候回中断,这时我们检查了程序很多遍,我们也找不到原因,(中断可能是因为某些不经常出现错误的异常,正由于不经常出现,造成了我们无法定位。)这时,我们就需要一个工具来将我们出错的信息记录到一个文件中,这时我们就可以通过分析文件来确定错误的原因及位置。
log4j是Apache的一个开源项目,也是一个非常优秀的日志记录工具。通过使用log4j我们可以很快的方便控制日志的输出级别、格式以及目的地。他的官方站点是:http://logging.apache.org/log4j/。
要想使用这个工具,必须要去下载他的jar文件以及加上他的一个配置文件
如下:
#将日志信息输出到控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
#将日志信息输出到test.log
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=test.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=debug, stdout,file
将这些放到一个log4j的文件里面做成properties类型文件,然后放到我们的MyEclipse里面,jar包放好以后,然后把编写的这个properties文件放到src包里面,要同级。注意:必须要放在src根目录下
这个配置文件的介绍:
(1)设置日志的输出级别和目的地:log4j.rootLogger=debug, stdout,file
log4j.rootLogger他的属性值有三个分别用逗号隔开,第一个代表着日志的级别、后面两个代表着那些目的地有效。
log4j的主要输出级别有:fatal、error、warn、info、debug,他们的优先级从高到低依次为fatal>error>warn>info>debug日志记录器(Logger对象)将只输出那些级别高于或等于它的级别的信息。例如:如果级别设置为info,那么在程序中调用fatal(Object msg)、error(Object msg) 、warn(Object msg)、 info(Object msg)方法将输出日志信息,而调用debug(Object msg)方法将不会输出日志信息。
(2)配置日志输出目的地
log4j允许将日志输出到多个目的地,一个输出目的地被称作一个appender。log4j中最常用的appender有以下两种:
1.ConsoleAppender:输出日志信息到控制台,可以通过属性log4j.appender.stdout进 行配置,与之相关的log4j.appender.stdout.Target属性的默认值是System.out。
2.FileAppender:输出日志信息到一个文件,可以通过属性log4j.appender.file进行配 置,与之相关的log4j.appender.file.File属性可以配置该文件的路径及名称,该文件不需要我们事先创建好,如果不存在,log4j会自动创建。
(3)日志布局及格式
log4j可以配置日志的布局及格式,最常用的有以下三种:
1.HTMLLayout:将日志信息输出为HTML表格。
2.SimpleLayout:这是最简单的一种输出格式,只输出了日志级别和异常提示信息。
3. PatternLayout:自定义输出格式,需要通过log4j.appender.file.layout.ConversionPattern属性来设置格式,常用的参数如下所示:
%d:用来设置输出日志的日期和时间格式,默认格式为IS08601,也可以自定义格 式,例如%d{yyyy-MM-dd HH : mm : ss},输出格式类似于2010-03-0917 : 51。
%m:用来输出代码中设置的异常提示信息。
%n:用来输出一个回车换行符。
%I:用来输出日志事件的发生位置,包括类名、发生错误的行号等信息。
%F:用来输出文件名。
%M:用来输出方法名。
5.使用log4j日志工具
在myeclice导入jar包和他的properties类型的配置文件后,在项目里通过导入 org.apache.log4j.Logger;
接着创建Logger对象,Logger logger=Logger.getLogger(Test.class.getName());
logger是我们自己定义的名字随意取, 后面括号里面的Test是我们的类名。
接着我们在处理异常的时候catch里面 用我们定义好的logger来用他的方法
他的方法总共有五种级别  分别是:
(1)fatal:致命的
(2)error:错误的
(3)warn:警告的
(4)info:信息提示的
(5)debug:调式的
例子:logger.fatal(“需要在日志里出现的内容”);

你可能感兴趣的:(java)