Java常见异常类含义与异常处理机制

1. runtimeException子类:
ArrayIndexOutOfBoundsException
    数组索引越界异常。当对数组的索引值为负数或大于等于数组大小时抛出。
ArithmeticException
    算术条件异常。譬如:整数除零等。
NullPointerException
    空指针异常。当应用试图在要求使用对象的地方使用了null时,抛出该异常。譬如:调用null对象的实例方法、访问null对象的属性、计算null对象的长度、使用throw语句抛出null等等
ClassNotFoundException
    找不到类异常。当应用试图根据字符串形式的类名构造类,而在遍历CLASSPAH之后找不到对应名称的class文件时,抛出该异常。
NegativeArraySizeException  
    数组长度为负异常
ArrayStoreException 
    数组中包含不兼容的值抛出的异常
SecurityException 
    安全性异常
IllegalArgumentException 
    非法参数异常

2.IOException
IOException  操作输入流和输出流时可能出现的异常。
EOFException   文件已结束异常
FileNotFoundException   文件未找到异常

3.其他
ClassCastException    类型转换异常
ArrayStoreException  数组中包含不兼容的值抛出的异常
SQLException   操作数据库异常类
NoSuchFieldException   字段未找到异常
NoSuchMethodException   方法未找到抛出的异常
NumberFormatException    字符串转换为数字抛出的异常
StringIndexOutOfBoundsException 字符串索引超出范围抛出的异常
IllegalAccessException  不允许访问某类异常
InstantiationException  当应用程序试图使用Class类中的newInstance()方法创建一个类的实例,而指定的类对象无法被实例化时,抛出该异常

异常处理机制:

对于非运行时异常必须要对其处理,处理的方式有两种:

第一种是使用 try{...}catch(){...}finally{...}进行捕获,

try-catch-finally 规则(异常处理语句的语法规则):

1)  必须在 try 之后添加 catch 或 finally 块。try 块后可同时接 catch 和 finally 块,但至少有一个块。
2) 必须遵循块顺序:若代码同时使用 catch 和 finally 块,则必须将 catch 块放在 try 块之后。
3) catch 块与相应的异常类的类型相关。
4) 一个 try 块可能有多个 catch 块。若如此,则执行第一个匹配块。即Java虚拟机会把实际抛出的异常对象依次和各个catch代码块声明的异常类型匹配,如果异常对象为某个异常类型或其子类的实例,就执行这个catch代码块,不会再执行其他的 catch代码块(顺序为从小到大,既子类行catch块要放在父类型catch块的前面,否则将报错,因为父类放在子类前,将全部被父类捕获,紫烈无法捕获而报错)
5) 可嵌套 try-catch-finally 结构。
6) 在 try-catch-finally 结构中,可重新抛出异常。
7) 除了下列情况,总将执行 finally 做为结束:JVM 过早终止(调用 System.exit(int));在 finally 块中抛出一个未处理的异常;计算机断电、失火、或遭遇病毒攻击。

第二种是在调用该会产生异常的方法所在的地方声明 throws Exception,

对于运行时异常,我们可以对其进行处理,也可以不对其进行处理,建议不对其进行处理

问问

猜你喜欢

转载自blog.csdn.net/whz199511/article/details/81907265