- 编译时错误:java源程序不能编译成.class文件。
- 运行时错误(异常处理):java源程序能够编译成 .class文件,java虚拟机解释执行.class文件时出现出现错误
图片来自菜鸟教程
Error和Exception都是Throwable的子类。
Exception又分为两个子类:检查异常和非检查异常。
非检查异常(运行时异常):可以处理,可以不处理
- ClassCastException:类型转换异常
- ArithmeticException:算术异常
- IndexoutofBoundsException:下标越界异常
- NumberFormatException:数字格式转换异常。
- NullPointException:空指针异常
运行时异常发生时会中断程序。
检查异常:一定要处理
- IOException:输入输出异常
- FileNotFoundException:没有找到目标文件,文件还未进行创建
- NotSerializableException:未序列化异常;写入的对象没有实现序列化接口。
- MySQLSynaxErrorException: 因为配置文件中帐号密码错误所造成的
- ClassNotFoundException:未发现此类
- SqlException:sql语句出错。
Eorrer错误,内存泄漏。作为程序员只能规避。
异常处理:
积极处理:try—catch
Catch参数中的异常类都是Exception的某个子类。
消极处理:throws
Throws用在方法上声明检查异常,表示这个方法会发生异常。此时若在子类上必须声明检查异常且父类的异常一定大于等于子类的异常;父类声明非检查异常,子类可以不声明。
Throws用在构造方法声明了检查异常,子类要在构造函数上声明一个大于等于父类的异常。