Java千百问_04异常处理(007)_常见的java异常有哪些(非运行时)

简介:

1、常见的java运行时异常有哪些


了解非运行时异常看这里:什么是java中的异常 
常见的运行时异常看这里:常见的运行时异常有哪些

我们所说的常见异常是jdk或者其他常用第三方jar中的异常,出现频次很高的异常。常见的非运行时异常(即检查异常,checked exception)包括:

  • 操作数据库异常:SQLException
  • 输入输出异常:IOException
  • 文件未找到异常:FileNotFoundException
  • 反射操作异常:ReflectiveOperationException
  • 类未找到异常: ClassNotFoundException

  • 方法未找到异常:NoSuchMethodException

  • 字段未找到异常:NoSuchFieldException
  • 非法访问权限异常:IllegalAccessException
  • 实例化异常:InstantiationException
  • 不支持克隆异常:CloneNotSupportedException

  • 被中止异常:InterruptedException


2、什么情况下会抛出这些异常

如何抛出异常看这里:java如何抛出异常

1.java.lang.SQLException

该异常的解释是:sql异常。 
sql语句异常种类十分多,通常都是sql语句、数据库执行错误导致,常见的表现有:

  • invalid column name 无效列名
  • table or view does not exist 表或者视图不存在
  • cannot insert NULL into () 不能将空值插入
  • 缺少表达式
  • SQL 命令未正确结束

在操作数据库时需要考虑全面,尽量避免该异常。

2.java.lang.IOException

该异常的解释是:输入输出异常。 
该异常种类也十分多(拥有很多子类),尤其对文件的操作,以及Android开发。常见的表现有:

  • FileNotFoundException 文件找不到。
  • InvalidPropertiesFormatException 输入内容不符合属性集的正确 XML 文档类型。

3.java.lang.FileNotFoundException

该异常的解释是:文件不存在异常。该异常继承于 IOException。 
这个异常通常是获取文件时,文件路径或文件名称错误导致的。

4.java.lang.ReflectiveOperationException

该异常的解释是:反射操作相关的异常。 
由于反射的特殊性,类、方法、属性均使用String作为名称进行操作,对于该类异常一定要十分注意。 
了解反射看这里:什么是Java中的反射

5.java.lang.ClassNotFoundException

该异常的解释是:指定的类不存在。该异常继承于ReflectiveOperationException。 
这个异常通常是在使用反射时,或者服务端引入jar包时抛出。 
使用反射时,根据类名(字符串)获取Class时,包、类名有误会造成该异常。

6.java.lang.NoSuchMethodException

该异常的解释是:指定的方法不存在。该异常继承于ReflectiveOperationException。 
这个异常通常是在使用反射时抛出。 
使用反射时,根据方法名(字符串)调用Method时,方法名有误会造成该异常。

7.java.lang.NoSuchFieldException

该异常的解释是:指定的字段不存在。该异常继承于ReflectiveOperationException。 
这个异常通常是在使用反射时抛出。 
使用反射时,根据字段名(字符串)获取、操作Field时,字段名有误会造成该异常。

8.java.lang.IllegalAccessException

该异常的解释是:没有访问权限。 
当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。 
最常见的地方即在使用反射调用private方法/属性时会抛出该异常,将private方法/属性共有化public即可。 
想了解public和privite看这里:public、privite、protected有什么区别

9.java.lang.InstantiationException

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

10.java.lang.CloneNotSupportedException

该异常的解释是:不支持克隆异常。该异常继承于 ReflectiveOperationException。 
当没有实现Cloneable接口或者不支持克隆方法时,调用其clone()方法则抛出该异常。

11.java.lang.InterruptedException

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


原文地址:http://blog.csdn.net/ooppookid/article/details/51132413
相关文章
|
2月前
|
Java 编译器 数据库连接
Java异常处理:写出更健壮的代码
Java异常处理:写出更健壮的代码
155 0
|
5月前
|
前端开发 Java 关系型数据库
基于Java+Springboot+Vue开发的鲜花商城管理系统源码+运行
基于Java+Springboot+Vue开发的鲜花商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的鲜花商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。技术学习共同进步
415 7
|
3月前
|
Java 程序员 数据库连接
我们详细地讲解一下 Java 异常及要如何处理
我是小假 期待与你的下一次相遇 ~
|
4月前
|
Java
java 多线程异常处理
本文介绍了Java中ThreadGroup的异常处理机制,重点讲解UncaughtExceptionHandler的使用。通过示例代码展示了当线程的run()方法抛出未捕获异常时,JVM如何依次查找并调用线程的异常处理器、线程组的uncaughtException方法或默认异常处理器。文章还提供了具体代码和输出结果,帮助理解不同处理器的优先级与执行逻辑。
125 1
|
6月前
|
SQL Java 中间件
【YashanDB知识库】yasdb jdbc驱动集成BeetISQL中间件,业务(java)报autoAssignKey failure异常
在BeetISQL 2.13.8版本中,客户使用batch insert向yashandb表插入数据并尝试获取自动生成的sequence id时,出现类型转换异常。原因是beetlsql在prepareStatement时未指定返回列,导致yashan JDBC驱动返回rowid(字符串),与Java Bean中的数字类型tid不匹配。此问题影响业务流程,使无法正确获取sequence id。解决方法包括:1) 在batchInsert时不返回自动生成的sequence id;2) 升级至BeetISQL 3,其已修正该问题。
【YashanDB知识库】yasdb jdbc驱动集成BeetISQL中间件,业务(java)报autoAssignKey failure异常
|
6月前
|
SQL druid Oracle
【YashanDB知识库】yasdb jdbc驱动集成druid连接池,业务(java)日志中有token IDENTIFIER start异常
客户Java日志中出现异常,影响Druid的merge SQL功能(将SQL字面量替换为绑定变量以统计性能),但不影响正常业务流程。原因是Druid在merge SQL时传入null作为dbType,导致无法解析递归查询中的`start`关键字。
|
6月前
|
运维 Java 程序员
Java中的异常处理方法
本文深入剖析Java异常处理机制,介绍可检查异常、运行时异常和错误的区别与处理方式。通过最佳实践方法,如使用合适的异常类型、声明精确异常、try-with-resources语句块、记录异常信息等,帮助开发者提高代码的可靠性、可读性和可维护性。良好的异常处理能保证程序稳定运行,避免资源泄漏和潜在问题。
195 5
|
7月前
|
Java 程序员 开发者
Java社招面试题:一个线程运行时发生异常会怎样?
大家好,我是小米。今天分享一个经典的 Java 面试题:线程运行时发生异常,程序会怎样处理?此问题考察 Java 线程和异常处理机制的理解。线程发生异常,默认会导致线程终止,但可以通过 try-catch 捕获并处理,避免影响其他线程。未捕获的异常可通过 Thread.UncaughtExceptionHandler 处理。线程池中的异常会被自动处理,不影响任务执行。希望这篇文章能帮助你深入理解 Java 线程异常处理机制,为面试做好准备。如果你觉得有帮助,欢迎收藏、转发!
469 14
|
10月前
|
设计模式 Java 开发者
Java中的异常处理:理解与实践
【10月更文挑战第42天】在Java的世界中,异常处理是每个开发者必须面对的挑战。它就像是一场不可预知的风暴,可能会在任何时候突然降临,打乱我们的计划。但是,如果我们能够掌握正确的处理方法,这场风暴也可以变成推动我们前进的力量。本文将带你深入理解Java中的异常处理机制,通过代码示例,我们将一起学习如何捕获、处理和预防异常,让你的程序在面对任何挑战时都能保持稳健和优雅。
|
9月前
|
安全 Java 数据库连接
Java中的异常处理:理解与实践
在Java的世界里,异常处理是维护代码健壮性的守门人。本文将带你深入理解Java的异常机制,通过直观的例子展示如何优雅地处理错误和异常。我们将从基本的try-catch结构出发,探索更复杂的finally块、自定义异常类以及throw关键字的使用。文章旨在通过深入浅出的方式,帮助你构建一个更加稳定和可靠的应用程序。
99 5