7.1异常
异常对象均为派生于Throwable类的一个实例,Throwable类下分为Errow类和Exception类,其中Errow类以及其子类描述了Java运行时的系统错误和资源耗尽错误,Exception类又可以下分为两类,即RuntimeException和其他异常。
由程序错误导致的异常是属于RuntimeException类,包括:错误的类型转换、数组访问越界和访问null指针。
不派生与RuntimeException类的异常包括:试图在文件后面读取数据、打开不存在的文件等
将派生于Error类和RuntimeException类的所有异常称为非受查异常,不需要声明抛出。而受查异常需要在方法首部声明(throws)。一个方法需要声明所有可能抛出的受查异常,被对应的异常处理器接受。
{
public Image loadImage(String s) throws FileNotFoundException,EOFException
{...}
}
- 1
- 2
- 3
- 4
- 5
子类方法中声明的受查异常不能比超类方法中声明的异常更通用。
对于一个存在的异常类,抛出的过程:
1.找到合适的异常类,在方法签名后声明
2.创建这个类的对象
3.将对象抛出
String readData(Scanner in) throws EOFException
{
...
while(...)
{
if(!in.hasNext())
{
if(n<len)
throw new EOFException;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
也可以创建自己的异常类,均派生于Exception类或其子类,定义的类包含两个构造器:一是默认构造器,二是带有详细描述信息的构造器,能打印出详细信息
class FileFormatException extends Exception
{
public FileFormatException() {}
public FileFormatException(String gripe)
{
super(gripe)//Throwable(String message)
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
捕获异常:try/catch语句
try
{
….
}
catch(Exception e)
{
handler for this type;
}
带资源的try语句
try(Resource res = …)
{
work with res
}
try块退出时,会自动调用res.close(),即关闭使用的资源
选自 :http://blog.csdn.net/zhou373986278/article/details/78123115