JAVA 异常处理

时间:2019-08-21
本文章向大家介绍JAVA 异常处理,主要包括JAVA 异常处理使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

异常处理


异常

  不正常,我们在代码的时候出现的编译或者运行时的错误

  异常包含了错误的类型、原因以及位置

异常的体系结构:

  Error:出现的不能够处理的严重问题(电脑烂了)

  Exception:可以处理的问题(小电影看多了电脑卡)


异常处理

  jvm处理异常的方式:

      如果出现异常我们没有处理,jvm会帮我们进行处理,并把异常的类型,原因还有位置显示在命令行

      还要终止程序,异常后面的代码将不再运行

  异常的处理方式:

    捕获处理: try ... catch语句 (IDEA 快捷键 CTRL + ALT + T)

try{
      有可能出现问题的代码;
}catch(异常对象){
      处理异常;
}    
try .. catch 执行顺序:
  1、try 如果发现异常,异常下面的代码不在执行
  2、直接进入catch语句中
  3、catch语句结束后,整个try。。。catch语句结束
  4、如果没有发现异常, try 语句执行后不在执行 catch 语句

    

抛出异常:当我们不想处理异常,或者没有能力处理的时候,可以选择抛出异常。

          谁调用方法,谁处理异常

    使用关键字 throws 在方法的声明时抛出异常

private static void method2() throws IOException {
        FileWriter fw = new FileWriter("a.txt");
    }

多个异常处理

 public static void main(String[] args) {
        try{
            String s = null;
            System.out.println(s.length());

            int[] arr = new int[5];
            System.out.println(arr[8]);

        }catch (NullPointerException e) {
            System.out.println("NullPointerException");
        }catch (ArrayIndexOutOfBoundsException e){
            System.out.println("ArrayIndexOutOfBoundsException");
        }

    }

    多个catch的运行顺序: 

      多个catch之间可以有子父类

      平级之间没有顺序

      如果有子父类,父类异常必须放在后面


Throwable常用的方法

String getMessage()  返回此 throwable 的详细消息字符串   原因
String toString()  返回此 throwable 的简短描述    类型和原因
void printStackTrace()  打印异常的堆栈的跟踪信息   类型原因和位置

Finally

finally使用格式:
try{
    有可能出现问题的代码;
}catch(异常类型 异常变量){
    异常处理;   
}finally{
   //释放资源的代码
   //收尾工作,无论try..catch 语句如何执行,fianlly 一定会执行
}

Finally 使用

public static void main(String[] args) {
        
        FileWriter fw = null;
        try {
            System.out.println(2 / 0);
            fw = new FileWriter("a.txt");
            fw.write("hello");
            fw.write("world");
            fw.write("java");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //释放资源
            try {
                if(fw != null) {
                    fw.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
      
    }

异常的分类

  运行时期异常:RuntimeException的子类就是运行时期异常,在编译时期可以自由选择处理或者不处理

  编译时期异常:是Exception的子类,非RuntimeExcpetion的子类,在编译时期必须处理

原文地址:https://www.cnblogs.com/viperqy/p/11388970.html