编译时异常:首先它的过程是在程序把他的.java的源文件编译成字节码文件也就是.class文件,出现的异常。
运行时异常:运行时异常表示虚拟机的通常操作中可能遇到的异常,它意味着程序存在着bug。
Exception分两类 :
运行时异常,不需要强制处理 所有的RuntimeException的子类都是运行时异常
编译时异常,需要强制处理 在Exception范围内,除了运行时异常的类都是编译时异常
编译时异常和程序的上下文条件有着密切关系,即使程序设计无误也会由于使用问题而引发。
Java编译器要求方法必须声明抛出可能发生的编译时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
Exception:异常 主要是在程序运行期间发生的一些不正常事件中止了程序的运行,可以通过JAVA异常处理机制捕获异常并处理,使得程序正常运行下去。发生之后可以捕获并处理的。
常见的异常:
1、编译时异常:
IOException 输入输出流异常
FileNotFoundException 文件找不到的异常
ClassNotFoundException 类找不到异常
DataFormatException 数据格式化异常
NoSuchFieldException 没有匹配的属性异常
NoSuchMethodException 没有匹配的方法异常
SQLException 数据库操作异常
TimeoutException 执行超时异常
IOException:广泛的说,什么时候会有IOException ,比如你文件都不到的时候 ,你在做数据库操作的时候数据库底层出现问题 ,或者你系统IO出问题了 ,系统拿不到文件句柄 ,你说的读着读着突然被删了,你可以试试,书不定真可以 ,你可以看有多少IOExeption个子类,差不多就有多少种类型。
FileNotFoundException:注意,这里的找不到是在你的编译结果文件夹里面找不到,而不是在你的工程里面找不到,很多同学说自己工程里面有这个文件,为什么还要报这个异常?这个时候,你最好跑到你的编译文件放的文件夹下面,比如tomcat的webapps文件夹下面,找找你的工程对应的文件夹,看看那个里面有没有你的文件
ClassNotFoundException:属于编译时异常,是在classloader加载类的时候发现类不存在在类路径的时候报出的。
SQLException:比如SQL语句写错,访问的表不存在,连接数据库失败等。
2、运行时异常(RuntimeException):
ArrayIndexOutofBoundsException 数组越界异常
ClassCastException 类型转换异常
NullPointerException 空指针异常
IllegalAccessException 非法的参数异常
InputMismatchException 输入不匹配异常