Java异常处理机制
Throwable类-父类 Error类,Exception类 -子类
运行异常-Error和RuntimeException以及其子类 编译器不做语法检查
检查异常-除了上述的类 编译器不让语句通过
public
void
testException()
throws
IOException
{
//FileInputStream的构造函数会抛出FileNotFoundException
FileInputStream fileIn =
new
FileInputStream(
"E:\\a.txt"
);
int
word;
//read方法会抛出IOException
while
((word = fileIn.read())!=-
1
)
{
System.out.print((
char
)word);
}
//close方法会抛出IOException
fileIn.clos
}// 来源 http://www.importnew.com/26613.html
异常处理方法
try...catch...finally
例:try {} catch (FileNotFoundException e) {} catch (IOException e) {} catch(Throwable e){ e.printStackTrace();}
先执行try里面的语句,发生异常后catch接收,catch块的捕捉与参数相同的异常信息,从上至下寻找,只执行第一个匹配的块
子类放前,父类放后(父类可以匹配子类的信息)
无论异常是否发生,finally的语句都要执行
throw 自己声明 public static void main(String[] args)throw Exception,AException,HullPointerException,
AException,IOException
throws仅仅是将函数中可能出现的异常向调用者声明,而自己则不具体处理。
throw new AException/IOException() 手动抛出异常
* class A{void a(){try {}catch(java.io.IOException e){} } }
* class A
{void a()throws A Exception
{try{}
catch (BException e){throw new AException(e);}
}
* class A
{void a()throws AException
{try
{try{}
catch (BException e){throw new AException(e);}
}
catch(AException e){} }
* 覆盖函数不允许抛出被覆盖函数没有声明的检查异常