java.lang.Throwable类,这个类是java中所有错误和异常的超类,异常可以被开发人员捕捉和处理;而错误一般是系统错误,一般不需要开发人员处理(也无法处理),比如内存溢出。
一、异常:
1.编译时异常(又称非运行异常,在Java的标准包java.lang java.util 和 java.net 中定义的异常都是非运行异常,可检测异常)
输入输出异常:IOException
操作数据库异常:SQLException
2.运行时异常(非可检测异常)
RuntimeException是java中所有运行时异常的父类,实际运行时出现的都是它的子类,看看RuntimeException的Java doc就可以随便列出几个:
①,ClassCastException类型强制转换异常
Object x = new Integer(0);
System.out.println((String)x);
当试图将对象强制转换为不是实例的子类时,抛出该异常
②,ArithmeticException算术异常类
int a=5/0;
一个整数“除以零”时,抛出异常
③,NullPointerException空指针异常类
String s=null;
int size=s.size();
当应用程序试图在需要对象的地方使用 null 时,抛出异常
④,StringIndexOutOfBoundsException
"hello".indexOf(-1);
指示索引或者为负,或者超出字符串的大小,抛出异常
⑤,NegativeArraySizeException数组负下标异常
数组大小为负值异常。当使用负数大小值创建数组时抛出该异常
String[] ss=new String[-1];
如应用程序试图创建大小为负的数组,则抛出异常
⑥,IllegalArgumentException参数异常
抛出的异常表明向方法传递了一个不合法或不正确的参数
⑦,NumberFormatException数字格式异常
当试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时,抛出该异常
⑧,ArrayIndexOutOfBoundsException数组下标越界异常
当使用的数组下标超出数组允许范围时,抛出该异常
⑨,ClassNotFoundException找不到类异常
当应用试图根据字符串形式的类名构造类,而在遍历CLASSPAH之后找不到对应名称的class文件时,抛出该异常
异常处理机制为:抛出异常,捕捉异常。
try 块:用于捕获异常。其后可接零个或多个catch块,如果没有catch块,则必须跟一个finally块。
catch 块:用于处理try捕获到的异常。
finally 块:无论是否捕获或处理异常,finally块里的语句都会被执行。当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行。在以下4种特殊情况下,finally块不会被执行:
1)在finally语句块中发生了异常。
2)在前面的代码中用了System.exit()退出程序。
3)程序所在的线程死亡。
4)关闭CPU。
throw、throws抛出异常
class Bar{
//throws标注在方法名之后,提示调用者,可能抛出的异常,让调用者不要忘记捕获
public void Enter(int age) throws IllegalArgumentException {
if(age<18){ //抛出非受查异常,但是并不捕获,捕获的动作交给调用者执行
throw new IllegalArgumentException("年龄不合格");
}else{ System.out.println("欢迎光临"); } } }
二、错误:
内存溢出OutOfMemoryError
线程死锁
476

被折叠的 条评论
为什么被折叠?



