• 31 Exception 异常处理


    /*
    * Exception in thread "main" java.lang.ArithmeticException: / by zero
    at com.itheima_01.ExceptionDemo.main(ExceptionDemo.java:5)
    我们在写代码的时候,经常的出现一些小问题,那么为了方便我们处理这些问题,java为我们提供了异常机制

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

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

    异常的体系结构:
    Throwable(最顶层)
    Error:出现的不能够处理的严重问题
    Exception:可以处理的问题

    电脑坏了:
    系统中毒:重装系统就可以了
    主板坏了:买一台新的
    *
    */

    /*
    * 异常的处理方式:
    * 1.捕获处理
    * try...catch语句
    *
    * try {
    * 有可能出现问题的代码;
    * } catch(ArithmeticException ae) {
    * 处理异常;
    * }

    * 2.抛出去
    * 当我们不想处理异常,或者没有能力处理的时候,我们可以选择抛出异常,谁调用方法谁处理异常
    * 使用关键字throws在方法的声明出抛出异常

    *
    *try...catch的执行顺序:
    * 首先执行try语句
    * 如果发现异常,异常下面的代码不在执行,直接跳入catch语句中,catch语句结束后,整个try...catch结束
    * 如果没有发现异常,try语句执行结束后,try...catch直接结束, 不在执行catch语句
    *
    * jvm处理异常的方式:
    * 如果出现异常我们没有处理,jvm会帮我们进行处理,他会把异常的类型,原因还有位置显示在命令行
    * 并且还终止了程序,异常后面的代码将不在执行
    */

    * 如何处理多个异常:
    * 可以使用多个try...catch语句
    * 使用一个try和多个catch
    *
    * 多个catch之间的顺序:
    * 多个catch之间可以有子父类
    * 平级之间没有顺序关系
    * 如果有子父类,父类异常必须放在后面(类似于if..else if..else.)
    *

    * finally:组合try...catch使用,用于释放资源等收尾工作,无论try...catch语句如何执行,finally的代码一定会执行
    *
    * FileWrite 写数据需要close才能写入文件,出现异常后就会退出,这时如果在finally里写入close方法那么异常前的数据可以正常写入
    *
    * try {
    * 有可能出现问题的代码;
    *
    * } catch(异常对象) {
    * 处理异常;
    * } finally {
    * 释放资源;
    * 清理垃圾;
    * }
    *

    public class Exception处理方式 {
        public static void main(String[] args) /*throws Exception*/ {
           try {
               String s = null;
               System.out.println(1);
               System.out.println(s.startsWith("aa"));
               System.out.println(2);//当前面try捕获到异常,后面输出2就不会执行
           } catch (Exception e) {
               System.out.println("空指针");
               System.out.println(3);
           }
    
           /*function();*/
        }
    
        /*public static void function() throws Exception {
            FileWriter fw = new FileWriter("b.txt");
    
        }*/
    }

    输出

    package day31_exception;
    
    import java.lang.Exception;
    
    /*
     *     如何处理多个异常:
     *         可以使用多个try...catch语句
     *         使用一个try和多个catch
     *
     * 多个catch之间的顺序:
     *             多个catch之间可以有子父类
     *             平级之间没有顺序关系
     *             如果有子父类,父类异常必须放在后面(类似于if..else if..else.)
     *
     *
     */
    public class Exception多个catch时执行顺序 {
        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]);
    
               System.out.println(2 / 0);
           }/*catch (Exception e) {
               System.out.println("出现异常了");
           }*/catch (ArrayIndexOutOfBoundsException e){
               System.out.println("出现数组越界了");
           }catch (NullPointerException e) {
               System.out.println("出现空指针了");
           }catch (Exception e) {
               System.out.println("出现异常了");
           }
        }
    }

    输出

  • 相关阅读:
    centos 系统时间设置
    centos6 centos7 配置开机启动服务
    centos6.9 samba配置
    vmware异常关闭后导致虚拟机无法打开问题解决办法
    try using -rpath or -rpath-link
    ZR#988
    提高十连测day3
    Atcoder ABC 141
    ZR#957
    ST表
  • 原文地址:https://www.cnblogs.com/longesang/p/11290525.html
Copyright © 2020-2023  润新知