文本浏览器

Java-Exception异常处理事件

发布者 : noShutdown | 发布时间 : 2019-01-17 20:07:43
文章号 : 42 | 阅读量 : 82+1 | AAW值(?) : 0.99 (仅供参考)

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.      异常往往在高层处理






评论加载中...

+ 参与讨论