异常
在程序中,错误可能产生于程序员没有预料到的各种情况,或者超出程序员可控范围的环境,为了能够及时有效地处理程序中的运行错误,Java 专门引入了异常类。
在写代码的时候处理异常一般遵循以下三个原则:
1.在当前方法声明中使用 try catch 语句捕获异常。
2.一个方法被覆盖时,覆盖它的方法必须拋出相同的异常或异常的子类。
3.如果父类抛出多个异常,则覆盖方法必须拋出那些异常的一个子集,而不能拋出新异常。
Throwable 类是所有异常和错误的超类,下面有 Error 和 Exception 两个子类分别表示错误和异常。
Exception 类是用来发现可能出现的异常情况,也用来创建自定义异常,这种异常一般是程序员用来发现代码错误的指示牌,在异常信息里,我们可以找到很多有用的信息,用来引导我们解决问题。我们来new一个最简单的运行时异常来看一下!!
下图为报错信息
不难发现,这个可以很直观的看到异常信息,因为一旦报错,我们的异常很可能会被catch吃掉,但是我们throw了一个运行时异常(RuntimeException),可以用来提醒开发人员,并且将异常信息打印出来,方便找错。
Error 的出现通常是不希望被捕获的异常,因为Error类型的异常显示的是与运行的系统本身相关的错误,例如堆栈内存溢出,一般出现这类的问题都会比较头疼,对于我们开发人员来说,如果生产环境上遇到了Error,一般是灾难性的。
我们这篇文章主要简单介绍一下异常以及常见的Exception。
1.Exception
这个不多做介绍,所有异常的根类,当用全局异常器处理的时候,经常会见到。
2.NullPointerException
空指针异常,最常见,但是也是最好检查的异常之一。一般情况下,异常信息会显示到你代码的行数错误上去,比如一行代码报了空指针,那么必然是这一行你操作了一个空的对象,比如你刚new了一个全新的对象,赋值没有赋进去,就直接get了,那么就会报NullPointerException。简单点就是你用一个null去点了其他属性,比如null.get,null.set,诸如此类的操作。
3.SQLException
操作数据库异常,一般情况下,这个异常都是你的sql写错了,这个时候你就要去检查一下你的sql语句,建议把你的日志信息中的sql语句拷出来,执行一下。
4.ClassNotFoundException
不能加载所需的类,这个异常在新手身上是最常见的,也是最麻烦的,在你实在找不到问题的情况下你可以尝试clean一下你的Eclipse,或者重启一下电脑。
5.NumberFormatException
数字转换异常,这个异常比较简单,就是转换到不符合目标数字接收格式的异常。打个比方,假如你用一个字符串“1.5”转换成Integer,那么就会报这个异常。
6.IOException
IO异常也是很常见的,一般你需要上传文件等需要操作IO的地方,都需要抛出这个异常。
7.ArraylndexOutOfBoundException
(索引)角标越界异常,对于数组索引,有的叫角标,有的叫下标,反正我们只要知道,这是操作的数组没有你预想的那么长,比如它的size为1,你去get(2),那么就会出现这个异常,因为他根本没有这个异常。
8.IllegalArgumentException
非法参数异常,当方法接收到不符合参数列表的参数时,就会报这个异常。
还有一些异常不那么常见或者可将性不高,我们也提一下RuntimeException(运行时异常),FileNotFoundException(找不到文件异常),InterruptedException(线程中断异常)。。。。。。
篇幅所限,还有很多异常我就不讲了,希望看到这篇文章的朋友可以关注我。
每天抽出空闲的时间多看一点点。相信我,你会变得更强。