一、常见异常:
1、RuntimeException
→错误的类型转换
→数组下标越界
→空指针访问
2、IOExeption
→从一个不存在的文件中读取数据
→越过文件结尾继续读取EOFException
→连接一个不存在的URL
3、java异常类层次:
二、异常处理机制(捕获和抛出)
1、java采用异常处理机制,将异常处理的程序代码集中在一起,与正常的程序代码分开,使得程序简洁并易于维护
2、捕获异常的有关信息:
与其他对象一样,可以访问一个异常对象的成员变量或调用它的方法。
→getMessage()方法,用来得到有关异常事件的信息
→printStackTrace()用来跟踪异常事件发生时执行堆栈的内容
三、声明抛出异常
1、声明抛出异常是java中处理异常的第二种方式
→如果一个方法(中的语句执行时)可能生成某种异常,但并不确定如何处理这种异常,
则此方法显式地声明抛出异常,表明该方法将不对这些异常进行处理,而由该方法的调用者负责处理
→在方法声明中用throws子句可以声明抛出异常的列表,
throws后面的异常类型可以是方法中产生的异常类型,也可以是它的父类
2、声明抛出异常举例:
public void readFile(String file)throws FileNotFoundException{ //读文件的操作可能产生FileNotFoundException类型的异常 FileInputStream fis=new FileInputStream(file); }
3、重写方法不能抛出比被重写方法范围更大的异常类型
四、人工抛出异常
1、java异常类对象除在程序执行过程中出现异常时由系统自动生成并抛出,也可以根据需要人工创建并抛出
→首先要生成异常类对象,然后通过throw语句实现抛出操作(提交给java允许环境)
IOException e=new IOException();
throw e;
2、可以抛出的异常必须是Throwable或其子类的实例。下面的语句在编译时将会产生语法错误
throw new String("want to throw");
五、创建用户自定义异常类:
1、用户自定义类MyException,用于描述数据取值范围错误信息。用户自己的异常类必须继承现有的异常类。
class MyException extends Exception{ private int idNumber; public MyException(String message,int id){ super(message); //Exception父类中的方法 this.idNumber=id; } public int getId(){ return idNumber; } }