Java项⽬中经常遇到的⼀些异常情况
⼀、
1. java.lang.nullpointerexception
  这个异常⼤家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调⽤了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图⽚,调⽤数组这些操作中,⽐如图⽚未经初始化,或者图⽚创建时的路径错误等等。对数组操作中出现空指针,很多情况下是⼀些刚开始学习编程的朋友常犯的错误,即把数组的初始化和数组元素的初始化混淆起来了。数组的初始化是对数组分配需要的空间,⽽初始化后的数组,其中的元素并没有实例化,依然是空的,所以还需要对每个元素都进⾏初始化(如果要调⽤的话)
  2. java.lang.classnotfoundexception
  这个异常是很多原本在jb等开发环境中开发的程序员,把jb下的程序包放在wtk下编译经常出现的问题,异常的解释是"指定的类不存在",这⾥主要考虑⼀下类的名称和路径是否正确即可,如果是在jb下做的程序包,⼀般都是默认加上package的,所以转到wtk下后要注意把package的路径加上。
  3. java.lang.arithmeticexception
  这个异常的解释是"数学运算异常",⽐如程序中出现了除以零这样的运算就会出这样的异常,对这种异常,⼤家就要好好检查⼀下⾃⼰程序中涉及到数学运算的地⽅,公式是不是有不妥了。
  4. java.lang.arrayindexoutofboundsexception
  这个异常相信很多朋友也经常遇到过,异常的解释是"数组下标越界",现在程序中⼤多都有对数组的操作,因此在调⽤数组的时候⼀定要认真检查,看⾃⼰调⽤的下标是不是超出了数组的范围,⼀般来说,显⽰(即直接⽤常数当下标)调⽤不太容易出这样的错,但隐式(即⽤变量表⽰下标)调⽤就经常出错了,还有⼀种情况,是程序中定义的数组的长度是通过某些特定⽅法决定的,不是事先声明的,这个时候,最好先查看⼀下数组的length,以免出现这个异常。
  5. java.lang.illegalargumentexception
  这个异常的解释是"⽅法的参数错误",很多j2me的类库中的⽅法在⼀些情况下都会引发这样的错误,⽐如⾳量调节⽅法中的⾳量参数如果写成负数就会出现这个异常,再⽐如g.setcolor(int red,int green,int blue)这个⽅法中的三个值,如果有超过255的也会出现这个异常,因此⼀旦发现这个异常,我们要做的,就是赶紧去检查⼀下⽅法调⽤中的参数传递是不是出现了错误等等;
⼆、
  1.空指针异常(java.lang.nullpointerexception)
发⽣该情况⼀般是字符串变量未初始化,数组未初始化,类对象未初始化等。还有⼀种情况是当该对象为空时你并没有判断是否为空值,这个错误我在之前的web习题上犯过,因此为了避免这种情况,除了检查是否初始化之外,如有必要则要加上判断是否为null的if语句。
  2.指定的类不存在(java.lang.ClassNotFoundException)
出现这个错误的原因之⼀是缺包,这时只要下载并导⼊相应的包即可;当我们已经把包导⼊的时候,⼜报了这种错误的情况下,就需要开启⾃⼰的编辑器去调整设置了;在使⽤tomcat的时候,先检查lib中是否导⼊了jar。
  3.字符串转换为数字异常(java.lang.NumberFormatException)
这个错误就是字符串中出现⾮数字型字符时,转换为数字时发⽣异常;除此之外,如果字符串转换为数字时超过了类型的范围(⽐如string 转int和string转double),也会出现这个错误。解决该问题的⽅法就是在转换之前先对字符串进⾏检查。
  4.数组下标越界异常(java.lang.IndexOutOfBoundsException)
顾名思义,你想取的数组元素在数组中并没有定义出来,⽐如定义了⼀个长度为5的数组a,当你想取a[6]元素时肯定会出错。解决这类问题就是要注意数组的长度,有时候为了减少空间浪费我们会使⽤动态数组构建⽅法,这时在对数组进⾏操作时建议先⽤length获取其数组长度,从⽽规避错误。
  5.数学运算异常(java.lang.ArithmeticException)
除数为0时会报出该错误,解决⽅法:避免除数为0。这个错误解读为“出现异常的运算条件”,除了除数为0的情况之外,可能还有其他的异常情况,届时具体情况具体分析。
  6.没有访问权限(java.lang.IllegalAccessException)
权限问题,在程序访问某⽅法时注意⼀下访问权限即可(public/private),这种错误在使⽤package时容易发⽣。
  7.⽅法的参数错误(java.lang.IllegalArgumentException)
在调⽤带有参数的⽅法时,请注意传递的参数是否正确。
  8.数据类型转换异常(java.lang.ClassCastException)
在进⾏强制类型转换时容易发⽣该错误,在进⾏转换前先对类型进⾏判别,规避错误。
  9.⽂件未到异常(java.lang.FileNotFoundException)
当程序试图打开⼀个不存在的⽂件进⾏读写操作时会报出该错误,通常由FileInputStream,FileOutputStream,RandomAccessFile的构造器声明发出,即使⽂件存在,但因某个原因⽆法访问,也会报出该错误。
  10.数组存储异常(java.lang.ArrayStoreException)
nullpointerexception为什么异常
假如在int型数组⾥存⼊string类型的变量,就会报错,解决⽅案是在存⼊对象时查明类型,或者在存⼊前先进⾏类型转换。
  11.⽅法不存在异常(java.lang.NoSuchMethodException)
程序所要调⽤的⽅法不存在。解决⽅法:不调⽤或者构造其⽅法。
  12.⽂件已结束异常(java.lang.EOFException)
程序输⼊过程中遇到⽂件或流的结尾引发该异常,此异常⽤于检查是否达到⽂件或流结尾。
  13.实例化异常(java.lang.InstantiationException)
类创建新对象时⽆法通过构造器进⾏实例化引发的异常。解决⽅案:构造⽅法。
  14.被中⽌异常(java.lang.InterruptedException)
通过其他线程的Thread的interrupt⽅法中⽌另⼀个线程时报出的错误。解决⽅法:⼀,不做处理,直接抛出;⼆,捕获异常,再次调⽤interrupt⽅法,将中断状态重新设置为true。
  15.不⽀持克隆异常(java.lang.CloneNotSupportedException)
如果没有实现Cloneable接⼝便调⽤了clone⽅法,报出该错误;若类不⽀持Cloneable接⼝,调⽤时也会出现该错误。解决⽅法:实现Cloneable接⼝。
  16.输⼊输出异常(IOException)
该异常为Exception的⼀个分⽀,通常发⽣在⽂件的数据读写上。
  17.错误(java.lang.Error)
所有错误的基类,⽤于标识严重的程序运⾏问题。通常原因是访问外部资源时出现⼀系列问题,解决⽅案也需要围绕访问外部资源这⼀重点展开。
以上是将通过⽹络途径查到到的异常和⾃⼰平常遇到的问题做出了⼀个总结!