Java-Exception异常处理事件
发布者 : noShutdown | 发布时间 : 2019-01-17 20:07:43文章号 : 41 | 阅读量 : 154+1 | AAW值(?) : 0.53 (仅供参考)
Exception异常处理
异常通常有两种解决方案,一是自己捕捉或抛出;二是编译器自己出了问题(这种异常一般难以解决)。
异常就像开车时路上突然出现一块石头,不可避免,只能想办法躲过。
如果在开车的时候发动机突然熄火这就不是能自己解决的问题,可能需要打电话,叫别人来处理。
异常有两种,第一种是Error,这种错误处理起来比较麻烦;还有一种就时Exception,这类异常通常是可以通过捕捉或抛出的方式避免。
Try-catch-finally
使用try-catch捕捉异常,当使用catch捕捉到异常时,会指向catch里的语句,当异常执行完时,或没有异常时,程序会跳到finally语句下。
try{
if(fileReader != null){
fileReader.close();
}
}catch(IOException e){
e.printStackTrace();
}
public
class TestException{
public static void main(String[] args){
int a = 0;
int b = 1;
try{
System.out.println("没有产生异常时,语句照常执行");
System.out.println(b/a); //产生异常
System.out.println("当产生异常时,不再运行异常下的语句");
}catch(Exception e){
e.printStackTrace(); //捕捉到异常
}finally{
System.out.println("程序执行完毕>>>>>"); //当异常处理完或没有截获到异常
}
}
}
throws
使用throws抛出一个exception,向上抛,下面的代码表示了readMyFile()方法抛出了一个IOException异常,当main方法调用这个方法时,它需要处理这个异常,但是它的方法很聪明,接着向上抛抛给了JRE。
public
class Test02
{
public static void main(String[] args) throws IOException{
readMyFile();
}
public static void readMyFile() throws IOException {
FileReader fileReader = new FileReader("C:\\Users\\Admin\\Documents\\WeChat Files\\zq2011001421\\Files\\abbc.txt");
char a = (char) fileReader.read();
if (fileReader != null) {
fileReader.close();
}
}
}
例子
/**
* 测试try-catch-finally的使用和经典案例
*/
public
class Test01
{
public static void main(String[] args){
FileReader fileReader = null;
try{
fileReader = new FileReader("C:\\Users\\Admin\\Documents\\WeChat Files\\zq2011001421\\Files\\abc.txt");
char a = (char)fileReader.read();
System.out.println(a);
}catch(FileNotFoundException e){ //子类异常在父类异常的前面个
e.printStackTrace();
}catch(IOException e){ //再捕捉一个异常
e.printStackTrace();
}finally { //当异常抛出后或没有异常时执行此段语句
try{
if(fileReader != null){
fileReader.close();
}
}catch(IOException e){
e.printStackTrace();
}
}
}
}
注意事项
1. 要避免使用异常处理代替错误处理,这样会降低程序的清晰性,并且效率低下
2. 处理异常不可以代替简单测试---只在异常情况下使用异常机制。
3. 不要进行小粒度的异常处理---应该将整个任务包装在一个try语句块中。
4. 异常往往在高层处理