JAVA 异常及异常处理 - 8.30

异常 - Exception

java里面万物皆为对象,异常也有类,每个异常都有对应的异常类,因为java是自上而下的执行,所以一旦发生异常下面的程序就不执行了,这时候我们就要学会如何处理异常了

异常的处理有两种方式

第一种:try catch

  • try的意思是尝试,里面放认为会有异常的代码块,尝试去运行
  • catch的意思是抓,用来捕捉异常,并解决这个异常让程序可以继续执行下去
  • catch可以抓取多个异常,但是最下面的异常必须要是Exception;也可以直接抓Exception异常

        public class Client1 {
        public static void main(String[] args) {
            int i = 0;
            System.out.println(div(10, 2));
            System.out.println("xxx");
        }
        public static int div(int x, int y) {
            int rs = 0;
            try {
                rs = x / y;
                System.out.println("xxx");
            } catch (NullPointerException e) {
                e.printStackTrace();
                rs = 0;
            } catch (Exception e) {
                e.printStackTrace();
                rs = 0;
            }
            return rs;
    }
    

第二种:throw

  • throw的意思是抛出,就是遇到了异常但不处理,而是把它抛出去
  • throw需要在方法后面显式的标记声明方法是有异常的,调用该方法的程序是要显式的处理异常,后者也可以再次抛出
  • 自定义的创建一个异常对象。在一般的异常发生时候,虚拟机会动态的创建一个「系统异常」抛出,和自定义使用 throw 抛出是一个概念

        public class Demo3 {
            public static void main(String[] args) throws Exception {
                fun1(17);
                System.out.println("end");
    
            }
    
            public static void fun1(int age) throws Exception {
                if (age < 18) {
                    throw new Exception("您的年龄不合法");
                } else {
                    System.out.println("您已经进入VIP房间");
                }
            }
        }
    

finally关键字

无论是否出现异常都会被执行,特别要注意的是,如果没有写 catch ,那么 finally 是会被执行的,但是中断后的语句是不会被执行的。一般用来资源回收

    public static int div(int x, int y) {
            int rs = 0;
            try {
                rs = x / y;
                System.out.println("xxx");
            } catch (NullPointerException e) {
                e.printStackTrace();
                rs = 0;
            } catch (Exception e) {
                e.printStackTrace();
                rs = 0;
            } finally {
                // 资源回收
                System.out.println("finally action");
            }
            System.out.println("finally action");
            return rs;
        }
    }

学会看异常的堆栈信息

在今后用到java的时候回遇到很对异常,我们学会看异常的堆栈信息会大大提高我们的工作效率,节省时间,配合debug模式来调试让程序正确运行

  • 异常类
  • 异常提示信息:getMessage()
  • 异常所在的代码位置:自下而上是异常出现的代码所在方法的调用顺序的先后
  • 通常第一行是异常的直接原因,后面都是抛出去的一层层向上调用了异常的方法

常见的几种异常

  • NPE:NullPointerException 在调用对象属性或者方法的时候,对象其实是个 null,就会报此异常;通常叫空指针异常
  • java.lang.ArrayIndexOutOfBoundsException:数组越界
  • java.lang.IndexOutOfBoundsException: Index: 1, Size: 1:集合越界
  • runtimeException:运行时异常
  • 还有就是所有异常的父类:Exception

猜你喜欢

转载自blog.csdn.net/ShanGe9527/article/details/82227125