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("出现异常了");
       }
    }
}

输出

猜你喜欢

转载自www.cnblogs.com/longesang/p/11290525.html