·异常的体系
Throwable
Error
·通常出现重大问题如:运行的类不存在或者内存溢出等。
·不编写针对代码对其处理
Exception
·在运行时运行出现的一起情况,可以通过try catch finally
Exception和Error的子类名都是以父类名作为后缀。
class Demo
{
int div(int a, int b)
{
return a / b;
}
}
class ExceptionDemo
{
public static void main(string[]args)
{
Demo d = new Demo();
try
{
int x = d.div(4, 0);
System.out.printin("x=" + x);
}
catch (Exception e)//Exception e=new ArithmeticException ();
{
system.out.print\n("除零啦");
System.out.println(e.getMessage ());///by zero;
system.out.printin(e.to String());//异常名称:异常信息。
e.printStackTrace ();//异常名称,异常信息,异常出现的位置。I
// 其实jvm默认的异常处理机制,就是在调用 printStackrrace 方法,打印异常的堆栈的跟踪信息。
}
system.out.peintln("over");
}
2,异常的处理
java提供了特有的语句进行处理。
try
{
需要被检测的代码:
}
catch(异常类变量)
{
处理异常的代码;(处理方式)
}
{
finally
一定会执行的语句;
}
序号 异常名称 异常描述
1 ClassCastException 类型转换异常类
2 ArrayStoreException 数组中包含不兼容的值抛出的异常
3 SQLException 操作数据库异常类
4 NoSuchFieldException 字段未找到异常
5 NoSuchMethodException 方法未找到抛出的异常
6 NumberFormatException 字符串转换为数字抛出的异常
7 StringIndexOutOfBoundsException 字符串索引超出范围抛出的异常
8 IllegalAccessException 不允许访问某类异常
9 InstantiationException
当应用程序试图使用Class类中的newInstance()方法创建
一个类的实例,而指定的类对象无法被实例化时,抛出该异常
RuntimeException子类:
序号 异常名称 异常描述
1 java.lang.ArrayIndexOutOfBoundsException 数组索引越界异常。当对数组的索引值为负数或大于等于数组大小时抛出。
2 java.lang.ArithmeticException 算术条件异常。譬如:整数除零等。
3 java.lang.SecurityException 安全性异常
4 java.lang.IllegalArgumentException 非法参数异常
5 java.lang.ArrayStoreException 数组中包含不兼容的值抛出的异常
6 java.lang.NegativeArraySizeException 数组长度为负异常
7 java.lang.NullPointerException 空指针异常。当应用试图在要求使用对象的地方使用了null时,抛出该异常。譬如:调用null对象的实例方法、访问null对象的属性、计算null对象的长度、使用throw语句抛出null等等。
2.IOException
序号 异常名称 异常描述
1 IOException 操作输入流和输出流时可能出现的异常
2 EOFException 文件已结束异常
3 FileNotFoundException 文件未找到异常
异常:
是什么?是对问题的描述,将问题进行对象的封装。
异常体系:
Throwable--Ezror
l--Exception
I-- RuntimeExceptio
异常体系的特点:异常体系中的所有类以及建立的对象都具备可抛性。
也就是说可以被throw和throws关键字所操作,
只有异常体系具备这个特点。
throw和throws的用法:
throw定义在函数内,用于抛出异常对象。
throws定义在函数上,用于抛出异常类,可以抛出多个用逗号隔开,
当函数内容有throw抛出异常对象,并未进行try处理,必须要在函数上声明,都在编译失败。
注意, RuntimeException 除外。也就说,函数内如果抛出的 RuntimePxcpetion 异常,函数上可以不用声明。
如果函数声明了异常,调用者需要进行处理。处理方法可以throws可以try。
异常有两种:
编译时被检测异常
该异常在编译时,如果没有处理(没有抛也没有txy),编译失败。
该异常被标识,代表这可以被处理。
运行时异常(编译时不检测)
在编译时,不需要处理,编译器不检查。
该异常的发生,建议不处理,让程序停止。需要对代码进行修正。
异常处理语句:
try
{
需要被检测的代码;
}
catch()
{
处理异常的代码;
}
finally
{
一定会执行的代码;
}