java异常分类

合集下载

java常见错误以及可能原因集锦

java常见错误以及可能原因集锦

java常见错误以及可能原因集锦java常见错误以及可能原因集锦0、需要标识符a) 不在函数内1、非法表达式开始b) 可能:丢失括号 .2. no data founda) 可能:setInt(1,100)中,没有100这个值3. 找不到符号a) 可能:没导入包4. 指定了无效URLa) 可能:数据库名或IP错误,即连接出错5. 类路径没有找到a) 可能: ClassNotFoundException: oracle.jdbc.driver.OracleDriverb) 原因: 一般是指包名写错,或者没有import包,或者没有在类路径中找到jar文件c) 解决: 没有加载Oracle驱动jar,在.bash_profile中把ojdbc14.jar加进来6. 空指针异常a) 可能: 数据源错误比如数据库名或IP错误7. 不能执行查询a) 可能: 数据库中表的问题,比如列名不存在8. invalid identitya) 可能: 列名出错9. 若在数据库中创建了两个sequence ,运行时出现异常可能是先后执行了多次select 语句,导致与原有的序列号产生冲突10. 表名或列名不存在a) 可能:表不存在或者没有插入数据到表中11. 不支持的类,类的版本错误a) 可能:没有导入jdk5.0,或者编译器仍为1.412. MappingNotFoundExceptiona) Maybe: In the Eclipse Not refersh , or not exist in the dirctory13. HibernateException: /hibernate.cfg.xml not founda) Maybe1: hibernate.cfg.xml not in the root directoryb) Maybe2: Could not parse configuration .c) resolve: database not connect or use another database14. ConstraintViolationExceptiona) Maybe: used a not true database15. 驱动没有找到或者 JDBC Driver not found可能:连接数据库的驱动jar包不存在或者版本不一致,比如将旧的版本换成新的会造成该类错误16. 空指针异常,/doc/e411973287.html,ng.NullPointerExce ptiona) 可能1:数据库连接出错,比如在hibernate.cfg.xml中的数据错误会导致异常。

java异常处理方法及流程

java异常处理方法及流程

java异常处理方法及流程Java 异常处理方法及在 Java 编程中,异常处理是一项非常重要的技术。

通过适当的异常处理方法,可以使程序具备更好的稳定性和可读性,提高程序的健壮性。

本文将详细介绍 Java 异常处理的各个流程。

异常的基本概念异常是在程序执行期间产生的一种错误或异常情况。

Java 引入了异常处理机制来处理这些异常,以提高程序的可靠性和可维护性。

异常分为两种类型:1.受检异常(Checked Exceptions):受检异常在编译阶段必须进行处理,否则编译器将报错。

例如,IOException 是常见的受检异常。

2.非受检异常(Unchecked Exceptions):非受检异常是指不需要显式捕获或声明抛出的异常,编译器不会检查是否对其进行处理。

例如,NullPointerException 是常见的非受检异常。

异常处理的方法Java 提供了多种处理异常的方法,包括捕获异常和抛出异常。

下面分别进行介绍。

捕获异常是指通过使用try-catch语句块来捕获并处理异常。

try语句块用于包裹可能出现异常的代码,catch语句块用于捕获并处理异常。

try {// 可能抛出异常的代码块// ...} catch (ExceptionType1 e1) {// 处理异常类型1// ...} catch (ExceptionType2 e2) {// 处理异常类型2// ...} finally {// 可选的 finally 代码块,始终会被执行// ...}抛出异常当一个方法无法处理某个异常时,可以通过throw关键字手动抛出异常。

异常将会被传递给调用该方法的代码,并进一步处理。

public void someMethod() throws SomeException {if (someCondition) {throw new SomeException("Some error message");}使用异常的注意事项在使用异常处理时,需要注意以下几点:•捕获异常的顺序非常重要,应该从特定异常到一般异常的顺序进行捕获。

java中常见的五种异常

java中常见的五种异常

java中常见的五种异常
1.ClassCastException(类转换异常)
数据类型转换错误,比如有个String temp="abc"; 如果设为(int)temp就会报错了,因为它们类型不一样,但是设为(object)temp就可以,因为object是它们的父类
2.IndexOutOfBoundsException(数组越界)
这个异常我们在操作数组的时候会经常遇到,异常的解释是“数组下标越界“,现在程序中大多都有对数组的操作,因此在调用数组的时候一定要认真检查,看自己调用的下标是不是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候,最好先查看一下数组的length,以免出现这个异常。

3.NullPointerException(空指针)
这个异常在编程时也经常遇到,异常的解释是“程序遇上了空指针“,简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在调用数组这些操作中,对数组操作中出现空指针,很多情况下是一些刚开始学习编程的人常犯的错误,即把数组。

Java异常——异常分类、声明检查型异常

Java异常——异常分类、声明检查型异常

Java异常——异常分类、声明检查型异常⼀、异常的分类1、在Java程序设计语⾔中,异常对象都是派⽣于Throwable类的⼀个类的实例。

如果Java的内置类不能满⾜需求,⽤户还可以创建⾃⼰的异常类。

2、异常分为两⽀,Error和Exception。

Error类层次描述了Java运⾏时系统的内部错误和资源耗尽错误。

这种情况很少出现,如果出现了这种情况,就只能通知⽤户并妥善地终⽌程序。

Exception类是应该重点关注的层次结构。

3、Exception类分解成两个分⽀:⼀⽀派⽣于RuntimeException,另⼀⽀派⽣于其他异常。

派⽣于RuntimeException的异常包括以下问题:“如果出现RuntimeException异常,那么⼀定是你的问题”☛错误的强制类型转换☛数组访问越界☛访问null指针不是派⽣于RuntimeException的异常包括以下问题:⼀般是I/O错误这类问题导致的☛试图超越⽂件末尾继续读取⽂件☛试图打开不存在的⽂件☛试图根据给定的字符串查找Class对象,⽽这个字符串表⽰的类不存在。

4、检查型异常和⾮检查型异常。

Java语⾔规范将派⽣于Error或RuntimeException类的所有异常称为⾮检查型异常(unchecked),所有其他类型的异常称为检查型异常(chcked)。

编译器会检查你是否为所有的检查型提供了异常处理器。

⼆、声明检查型异常public FileInputStream(String name)throws FileNotFoundException这个声明是标准类库中FileInputStream类的⼀个构造器的声明。

这个声明表⽰构造器根据给定的String参数产⽣⼀个FileInputStream对象,但也有可能抛出FileNotFoundException异常。

如果发⽣了糟糕的情况,构造器不会初始化⼀个新的FileInputStream对象,⽽是抛出⼀个FileNotFoundException类对象,如果抛出了这样⼀个异常对象,系统会开始搜索知道如何处理FileNotFoundException对象的异常处理器。

Java异常类型及处理

Java异常类型及处理

Java异常类型及处理⽬录⼀、异常定义⼆、异常的结构和分类三、异常的处理和捕获四、⾃定义异常五、异常的应⽤1.打印堆栈2.弹出流程六、注意点总结⼀、异常定义异常就是“意外、例外”的意思,也就是⾮正常情况。

异常本质上是程序上的错误,包括程序逻辑错误和系统错误。

异常的处理基本上就是⽤来兜底的,也是程序开发中程序不愿意看到的。

异常最基本的信息就是线程的堆栈信息。

⼆、异常的结构和分类Throwable主要分为Error和Exception。

错误:Error类以及他的⼦类的实例,代表了JVM本⾝的错误。

错误不能被程序员通过代码处理,躺平解决就好,不要反抗。

常见的错误有下⾯这些异常:Exception以及他的⼦类,代表程序运⾏时发送的各种不期望发⽣的事件。

可以被Java异常处理机制使⽤,是异常处理的核⼼,能在程序中解决的都不叫事。

常见的异常有这么多。

三、异常的处理和捕获异常想要处理肯定要先捕获到异常才可以,怎么捕获异常呐,Java给我提供了⼏个关键字,每个关键字怎么⽤呐?1、try,catch 就是直接捕获异常,catch 内的异常类型是能捕获的类型,⼀般如果有多个异常,从上到下的顺序是异常范围越来越⼤。

注:ErrorCodeException的定义可以参考⾃定义异常。

public static void second(String[] args) {try {throw new ErrorCodeException("1123");} catch (ErrorCodeException e) {e.printStackTrace();}catch (Exception e){e.printStackTrace();}}2、try catch finally 增加了finally关键字,就是在异常之后还能做⼀些事情,⽐如常见的关闭输⼊流,输出流,是程序最后的倔强。

public static String readFileContent(String fileName) {File file = new File(fileName);BufferedReader reader = null;StringBuffer sbf = new StringBuffer();try {reader = new BufferedReader(new FileReader(file));String tempStr;while ((tempStr = reader.readLine()) != null) {sbf.append(tempStr);}reader.close();return sbf.toString();} catch (IOException e) {e.printStackTrace();} finally {if (reader != null) {try {reader.close();} catch (IOException e1) {e1.printStackTrace();}}}return sbf.toString();}3、throw 主要⽤来创建⼀个异常,因为程序中可能需要抛出⼀个异常,⽐如我们游戏服务器游戏逻辑验证客户端参数不通过,会主动抛出⼀个⾃定义的异常4、throws 主要⽤在⽅法签名上,当我们读写⽂件或者反射的时候,如果不⽤try catch 就会发现⽅法签名后有⼀堆的异常需要处理。

java的异常处理机制名词解释

java的异常处理机制名词解释

java的异常处理机制名词解释在Java开发过程中,异常处理机制是一项重要的功能。

它允许我们在程序中正确处理异常情况,使程序能够更加健壮。

本文将围绕Java的异常处理机制展开,逐步分析其中的名词解释。

1. 异常在Java中,异常指的是在程序执行过程中发生的一些错误或不正常的情况。

这些情况可能是由于用户输入的不正确或系统资源不足等原因所导致。

当程序发生异常时,程序流程将会被中断并转入异常处理程序进行处理。

2. 异常分类Java中的异常分为两类:受检异常和非受检异常。

受检异常是在编译期就可以检测到的异常,编译器强制要求程序去处理这些异常。

而非受检异常不需要强制要求程序去处理,通常是由程序逻辑错误引起的。

3. 异常处理器异常处理器是一段特殊的程序,用于捕获并处理异常。

在Java 中,异常处理器通常使用try-catch语句块来实现。

当程序执行到try 语句块时发生异常,程序将转入catch语句块并进行异常处理。

4. 抛出异常当程序执行发生异常时,可以使用throw语句抛出异常。

throw 语句通常包括一个异常对象,用于说明发生的异常类型。

5. 自定义异常在Java中,我们可以自定义异常来处理我们自己的异常情况。

自定义异常需要继承自Exception类或者RuntimeException类。

通过自定义异常,我们可以将一些通用的异常情况封装起来,提高程序的可读性和可维护性。

6. finally块finally块是try-catch语句块的可选部分,用于在无论是否发生异常都要执行的代码。

finally块通常用于释放资源或进行清理操作。

7. try-with-resources语句try-with-resources语句是Java 7中新增的语法,用于自动关闭资源。

这种语句会自动将在try语句块中声明的资源关闭,无需手动关闭。

这在程序中可以简化代码,提高程序的可读性和可维护性。

通过以上分步骤阐述,我们深入了解了Java的异常处理机制,并对其中的名词解释有了更加清晰的认识。

异常的定义和分类

异常的定义和分类

异常的定义和分类
异常
异常分类:
Java中,异常对象都是派⽣于Throwable类的⼀个实例。

Java内置的异常类,不能满⾜需求,可以⾃⼰创建异常类
Throwable分成2个分⽀:Error和Exception。

Error 类描述了java运⾏时系统的内部错误和资源耗尽错误。

应⽤程序不应该抛出这样的错误。

Exception划分2个分⽀:⼀个分⽀派⽣于RuntimeException;另⼀个分⽀包含其他异常。

划分2个分⽀的规则是:由程序错误导致的异常属于RuntimeException;⽽程序本⾝没有问题,但由于像i/o错误这问题导致的异常属于其他异常。

派⽣于RuntimeException的异常包括:
错误的类转换。

数组访问越界。

访问空指针。

不是派⽣于RuntimeException的异常包括:
试图在⽂件尾部读取数据;
试图打开⼀个不存在的⽂件;
试图根据给定的字符串查找Class对象,⽽这个字符串对象不存在;
Java语⾔规范将派⽣于Error类和RuntimeExeption类的所有异常称为未检查(unchecked)异常,所有的其他的异常称为已检查(checked)异常。

编译器将核查是否,为所有的已检验异常提供了异常处理器。

总之,⼀个⽅法必须声明所有可能抛出的已检测的异常。

⽽未检查异常要么不可控制(Error),
要么就应该避免发⽣(RuntimeException);如果⽅法没有声明所有可能发⽣的已检查异常,编译器就会给出⼀个错误信息。

Java常见异常(RuntimeException)详细介绍并总结

Java常见异常(RuntimeException)详细介绍并总结

Java常见异常(RuntimeException)详细介绍并总结本⽂重在Java中异常机制的⼀些概念。

写本⽂的⽬的在于⽅便我很长时间后若是忘了这些东西可以通过这篇⽂章迅速回忆起来。

1. 异常机制1.1 异常机制是指当程序出现错误后,程序如何处理。

具体来说,异常机制提供了程序退出的安全通道。

当出现错误后,程序执⾏的流程发⽣改变,程序的控制权转移到异常处理器。

1.2 传统的处理异常的办法是,函数返回⼀个特殊的结果来表⽰出现异常(通常这个特殊结果是⼤家约定俗称的),调⽤该函数的程序负责检查并分析函数返回的结果。

这样做有如下的弊端:例如函数返回-1代表出现异常,但是如果函数确实要返回-1这个正确的值时就会出现混淆;可读性降低,将程序代码与处理异常的代码混爹在⼀起;由调⽤函数的程序来分析错误,这就要求客户程序员对库函数有很深的了解。

1.3 异常处理的流程1.3.1 遇到错误,⽅法⽴即结束,并不返回⼀个值;同时,抛出⼀个异常对象1.3.2 调⽤该⽅法的程序也不会继续执⾏下去,⽽是搜索⼀个可以处理该异常的异常处理器,并执⾏其中的代码2 异常的分类2.1 异常的分类2.1.1 异常的继承结构:基类为Throwable,Error和Exception继承Throwable,RuntimeException和IOException等继承Exception,具体的RuntimeException继承RuntimeException。

2.1.2 Error和RuntimeException及其⼦类成为未检查异常(unchecked),其它异常成为已检查异常(checked)。

2.2 每个类型的异常的特点2.2.1 Error体系 Error类体系描述了Java运⾏系统中的内部错误以及资源耗尽的情形。

应⽤程序不应该抛出这种类型的对象(⼀般是由虚拟机抛出)。

如果出现这种错误,除了尽⼒使程序安全退出外,在其他⽅⾯是⽆能为⼒的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java中的异常类型1. ng.nullpointerexception这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。

对数组操作中出现空指针,很多情况下是一些刚开始学习编程的朋友常犯的错误,即把数组的初始化和数组元素的初始化混淆起来了。

数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的,所以还需要对每个元素都进行初始化(如果要调用的话)2. ng.classnotfoundexception这个异常是很多原本在jb等开发环境中开发的程序员,把jb下的程序包放在wtk下编译经常出现的问题,异常的解释是"指定的类不存在",这里主要考虑一下类的名称和路径是否正确即可,如果是在jb下做的程序包,一般都是默认加上package的,所以转到wtk下后要注意把package的路径加上。

3. ng.arithmeticexception这个异常的解释是"数学运算异常",比如程序中出现了除以零这样的运算就会出这样的异常,对这种异常,大家就要好好检查一下自己程序中涉及到数学运算的地方,公式是不是有不妥了。

4. ng.arrayindexoutofboundsexception这个异常相信很多朋友也经常遇到过,异常的解释是"数组下标越界",现在程序中大多都有对数组的操作,因此在调用数组的时候一定要认真检查,看自己调用的下标是不是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了,还有一种情况,是程序中定义的数组的长度是通过某些特定方法决定的,不是事先声明的,这个时候,最好先查看一下数组的length,以免出现这个异常。

5. ng.illegalargumentexception这个异常的解释是"方法的参数错误",很多j2me的类库中的方法在一些情况下都会引发这样的错误,比如音量调节方法中的音量参数如果写成负数就会出现这个异常,再比如g.setcolor(int red,int green,int blue)这个方法中的三个值,如果有超过255的也会出现这个异常,因此一旦发现这个异常,我们要做的,就是赶紧去检查一下方法调用中的参数传递是不是出现了错误。

6. ng.illegalaccessexception这个异常的解释是"没有访问权限",当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。

对程序中用了package的情况下要注意这个异常。

其他还有很多异常,我就不一一列举了,我要说明的是,一个合格的程序员,需要对程序中常见的问题有相当的了解和相应的解决办法,否则仅仅停留在写程序而不会改程序的话,会极大影响到自己的开发的。

关于异常的全部说明,在api里都可以查阅。

算术异常类:ArithmeticExecption空指针异常类:NullPointerException类型强制转换异常:ClassCastException数组负下标异常:NegativeArrayException数组下标越界异常:ArrayIndexOutOfBoundsException违背安全原则异常:SecturityException文件已结束异常:EOFException文件未找到异常:FileNotFoundException字符串转换为数字异常:NumberFormatException操作数据库异常:SQLException输入输出异常:IOException方法未找到异常:NoSuchMethodExceptionng.AbstractMethodError抽象方法错误。

当应用试图调用抽象方法时抛出。

ng.AssertionError断言错。

用来指示一个断言失败的情况。

ng.ClassCircularityError类循环依赖错误。

在初始化一个类时,若检测到类之间循环依赖则抛出该异常。

ng.ClassFormatError类格式错误。

当Java虚拟机试图从一个文件中读取Java类,而检测到该文件的内容不符合类的有效格式时抛出。

ng.Error错误。

是所有错误的基类,用于标识严重的程序运行问题。

这些问题通常描述一些不应被应用程序捕获的反常情况。

ng.ExceptionInInitializerError初始化程序错误。

当执行一个类的静态初始化程序的过程中,发生了异常时抛出。

静态初始化程序是指直接包含于类中的static语句段。

ng.IllegalAccessError违法访问错误。

当一个应用试图访问、修改某个类的域(Field)或者调用其方法,但是又违反域或方法的可见性声明,则抛出该异常。

ng.IncompatibleClassChangeError不兼容的类变化错误。

当正在执行的方法所依赖的类定义发生了不兼容的改变时,抛出该异常。

一般在修改了应用中的某些类的声明定义而没有对整个应用重新编译而直接运行的情况下,容易引发该错误。

ng.InstantiationError实例化错误。

当一个应用试图通过Java的new操作符构造一个抽象类或者接口时抛出该异常.ng.InternalError内部错误。

用于指示Java虚拟机发生了内部错误。

ng.LinkageError链接错误。

该错误及其所有子类指示某个类依赖于另外一些类,在该类编译之后,被依赖的类改变了其类定义而没有重新编译所有的类,进而引发错误的情况。

ng.NoClassDefFoundError未找到类定义错误。

当Java虚拟机或者类装载器试图实例化某个类,而找不到该类的定义时抛出该错误。

ng.NoSuchFieldError域不存在错误。

当应用试图访问或者修改某类的某个域,而该类的定义中没有该域的定义时抛出该错误。

ng.NoSuchMethodError方法不存在错误。

当应用试图调用某类的某个方法,而该类的定义中没有该方法的定义时抛出该错误。

ng.OutOfMemoryError内存不足错误。

当可用内存不足以让Java虚拟机分配给一个对象时抛出该错误。

ng.StackOverflowError堆栈溢出错误。

当一个应用递归调用的层次太深而导致堆栈溢出时抛出该错误。

ng.ThreadDeath线程结束。

当调用Thread类的stop方法时抛出该错误,用于指示线程结束。

ng.UnknownError未知错误。

用于指示Java虚拟机发生了未知严重错误的情况。

ng.UnsatisfiedLinkError未满足的链接错误。

当Java虚拟机未找到某个类的声明为native方法的本机语言定义时抛出。

ng.UnsupportedClassVersionError不支持的类版本错误。

当Java虚拟机试图从读取某个类文件,但是发现该文件的主、次版本号不被当前Java虚拟机支持的时候,抛出该错误。

ng.VerifyError验证错误。

当验证器检测到某个类文件中存在内部不兼容或者安全问题时抛出该错误。

ng.VirtualMachineError虚拟机错误。

用于指示虚拟机被破坏或者继续执行操作所需的资源不足的情况。

ng.ArithmeticException算术条件异常。

譬如:整数除零等。

ng.ArrayIndexOutOfBoundsException数组索引越界异常。

当对数组的索引值为负数或大于等于数组大小时抛出。

ng.ArrayStoreException数组存储异常。

当向数组中存放非数组声明类型对象时抛出。

ng.ClassCastException类造型异常。

假设有类A和B(A不是B的父类或子类),O是A的实例,那么当强制将O构造为类B的实例时抛出该异常。

该异常经常被称为强制类型转换异常。

ng.ClassNotFoundException找不到类异常。

当应用试图根据字符串形式的类名构造类,而在遍历CLASSPAH 之后找不到对应名称的class文件时,抛出该异常。

ng.CloneNotSupportedException不支持克隆异常。

当没有实现Cloneable接口或者不支持克隆方法时,调用其clone()方法则抛出该异常。

ng.EnumConstantNotPresentException枚举常量不存在异常。

当应用试图通过名称和枚举类型访问一个枚举对象,但该枚举对象并不包含常量时,抛出该异常。

ng.Exception根异常。

用以描述应用程序希望捕获的情况。

ng.IllegalAccessException违法的访问异常。

当应用试图通过反射方式创建某个类的实例、访问该类属性、调用该类方法,而当时又无法访问类的、属性的、方法的或构造方法的定义时抛出该异常。

ng.IllegalMonitorStateException违法的监控状态异常。

当某个线程试图等待一个自己并不拥有的对象(O)的监控器或者通知其他线程等待该对象(O)的监控器时,抛出该异常。

ng.IllegalStateException违法的状态异常。

当在Java环境和应用尚未处于某个方法的合法调用状态,而调用了该方法时,抛出该异常。

ng.IllegalThreadStateException违法的线程状态异常。

当县城尚未处于某个方法的合法调用状态,而调用了该方法时,抛出异常。

ng.IndexOutOfBoundsException索引越界异常。

当访问某个序列的索引值小于0或大于等于序列大小时,抛出该异常。

ng.InstantiationException实例化异常。

当试图通过newInstance()方法创建某个类的实例,而该类是一个抽象类或接口时,抛出该异常。

ng.InterruptedException被中止异常。

当某个线程处于长时间的等待、休眠或其他暂停状态,而此时其他的线程通过Thread的interrupt方法终止该线程时抛出该异常。

ng.NegativeArraySizeException数组大小为负值异常。

当使用负数大小值创建数组时抛出该异常。

ng.NoSuchFieldException属性不存在异常。

当访问某个类的不存在的属性时抛出该异常。

ng.NoSuchMethodException方法不存在异常。

当访问某个类的不存在的方法时抛出该异常。

ng.NullPointerException空指针异常。

当应用试图在要求使用对象的地方使用了null时,抛出该异常。

譬如:调用null对象的实例方法、访问null对象的属性、计算null对象的长度、使用throw语句抛出null等等。

相关文档
最新文档