Java基础十八

1 异常

1.1 异常概述

  • 异常:异常就是Java程序在运行的过程中出现的错误。

1.2 异常的由来

  • 问题是现实生活中一个具体的事务,是可以通过Java的类的形式进行描述的,并封装成对象。
  • 其实对不正常情况进行描述后的对象的体现在Java中就是异常。

1.3 异常的分类

  • 异常体系的超类是Throwable。
  • Throwable下面有2个子类Error(错误)和Exception(异常)。
  • Exception下面有RuntimeException(运行期异常)和编译期异常(Exception的子类除去RuntimeException的)。

1.4 JVM默认如何处理异常

  • 如果程序出现了问题,我们没有处理,那么JVM会做默认的处理。
  • 把异常的名称,原因和出现的位置等信息输出在控制台。并终止程序。
  • 示例:
package com.xuweiwei;

/**
 * @author 许威威
 * @version 1.0
 */
public class ExceptionDemo {
    public static void main(String[] args) {
        int a = 10 / 0;
        
        System.out.println("over");

    }
}

1.5 异常处理方案

1.5.1 try……catch……finally方式

  • 格式
try{
  可能出现异常的代码;
}catch(异常名 变量){
   处理异常; 
}finally{
  释放资源;  
}
  • 示例:
package com.xuweiwei;

/**
 * @author 许威威
 * @version 1.0
 */
public class ExceptionDemo2 {
    public static void main(String[] args) {
        try {
            int i = 10 / 0;
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("over");
    }
}
  • 示例:
package com.xuweiwei;

/**
 * @author 许威威
 * @version 1.0
 */
public class ExceptionDemo3 {
    public static void main(String[] args) {

        try {
            int[] arr = {1};
            System.out.println(arr[1]);
        }catch (ArithmeticException e){
            System.out.println("除数不能为0");
        }catch (IndexOutOfBoundsException e){
            System.out.println("数组访问越界");
        }

        System.out.println("over");



    }
}

1.5.2 throws方式

  • 使用场景:定义功能方法的时候,需要把出现的问题暴露出来让调用者去处理。那么就通过throws在方法上标识。
  • 示例:
package com.xuweiwei;

/**
 * @author 许威威
 * @version 1.0
 */
public class ExceptionDemo3 {
    public static void main(String[] args) {

        try {
            int[] arr = {1};
            System.out.println(arr[1]);
        }catch (ArithmeticException e){
            throw new RuntimeException("除数不能为0"+e.getMessage());
        }catch (IndexOutOfBoundsException e){
            throw new RuntimeException("数组访问越界"+e.getMessage());
        }

        System.out.println("over");



    }
}

1.6  编译期异常和运行期异常的区别?

  • 编译期异常必须处理。
  • 运行期异常可以不处理。

1.7 throw和throws的区别?

  • throws:
  • ①用在方法声明后面,跟的是异常类名。
  • ②可以跟多个异常类名,用逗号隔开。
  • ③表示抛出异常,由该方法的调用者来处理。
  • ④throws表示出现异常的一种可能性,并不一定会发生这些异常。  
  • throw:
  • ①用在方法体内,跟的是异常对象名。
  • ②只能抛出一个异常对象名。
  • ③表示抛出异常,由方法体内的语句处理。
  • ④throw表示抛出了异常,执行throw则一定会抛出某种异常。

2 File

3 递归

猜你喜欢

转载自www.cnblogs.com/xuweiweiwoaini/p/9363306.html