什么是异常?如何处理异常?

目标:

  1. 明确什么是异常 (重点)
  2. 能辨识出常见的异常及其含义。(熟悉+)
  3. 理解异常产生的原理 (了解)
  4. 能处理异常 (重点)
  5. 能够自定义异常类型 (熟悉)

异常

  • 问题引入
  • 一、异常的概念
    • 什么是异常呢?
    • 异常发生的原因有很多,通常包含以下几大类:
  • 二、异常的体系结构
  • 三、异常处理的基本语法
    • (一)try - catch
      • 处理格式
      • try+catch的处理流程
        • 使用异常的效果:
          • 1、不捕获异常:
          • 2、捕获异常
            • 处理多异常的格式 1
            • 处理多异常的格式 2(了解)
            • 处理多异常的格式 3(常用)
          • 小结
    • finally常见面试问题
    • (二)throws
      • 1.throws 概念
        • 格式
      • 2.案例
      • 3.throws抛出异常的规则
      • 4.什么时候用throws / try-catch
    • throw
      • 1.throw 概念
      • 2.实例
    • throw 和 throws 面试题
    • (三)自定义异常(了解)
      • 非受检异常(运行时异常)
      • 受检异常
    • RuntimeExcepion与Exception的区别
  • 四、总结

问题引入

1、编写代码如下:
什么是异常?如何处理异常?_第1张图片
2、运行测试
什么是异常?如何处理异常?_第2张图片
什么是异常?如何处理异常?_第3张图片
3、新手误区:

  • 容易想当然:认为所有用户都会按照程序员的思路来操作;
  • 容易**“我认为”**:用户的需求或设计在别人看来就是合理的,程序员不是产品经理,不要擅自改动;

4、异常产生的过程
什么是异常?如何处理异常?_第4张图片
所以x/y这里变成了一个new的操作
什么是异常?如何处理异常?_第5张图片
什么是异常?如何处理异常?_第6张图片
5、为了避免JVM接收到异常对象,可以选择在 创建异常对象——>虚拟机 过程中拦截,这就引入了处理异常。

一、异常的概念

什么是异常呢?

异常是在程序中导致程序中断运行的一种指令流

异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。

比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error ;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出java.lang.ArithmeticException 的异常。

异常发生的原因有很多,通常包含以下几大类:

  • 用户输入了非法数据。
  • 要打开的文件不存在。
  • 网络通信时连接中断,或者JVM内存溢出。

这些异常有的是因为用户错误引起,有的是程序错误引起的,还有其它一些是因为物理错误引起的。

要理解Java异常处理是如何工作的,你需要掌握以下三种类型的异常:

  • 检查性异常: 最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。
  • 运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
  • **错误:**错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。

通过代码来理解:

public class Demo_1 {
   
    public static void main(String[] args) {
   
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int x = input.nextInt();
        System.out.println("请再输入一个数字");
        int y = input.nextInt();
        System.out.println(x / y);
        System.out.println("运行完毕!");
    }
}

运行结果:
(1)什么是异常?如何处理异常?_第7张图片
(2)
什么是异常?如何处理异常?_第8张图片

以上的代码在“x/y;”位置处产生了异常,一旦产生异常之后,异常之后的语句将不再执行了,所以现在的程序并没有正确的执行完毕之后就退出了。

那么,为了保证程序出现异常之后仍然可以正确的执行完毕,所以要采用异常的处理机制。

二、异常的体系结构

1、异常指的是Exception , Exception类, 在Java中存在一个父类Throwable(可能的抛出) Throwable存在两个子类:

  • 1.Error:表示的是错误,是JVM发出的错误操作,只能尽量避免,无法用代码处理。(比如内存过小)

  • 2.Exception:一般表示所有程序中的错误,所以一般在程序中将进行try…catch的处理。
    什么是异常?如何处理异常?_第9张图片
    下面将详细讲述这些异常之间的区别与联系:

  • ErrorError类对象由 Java 虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。例如,Java虚拟机运行错误(Virtual
    MachineError
    ),当JVM不再有继续执行操作所需的内存资源时,将出现
    OutOfMemoryError。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止;还有发生在虚拟机试图执行应用时,如类定义错误(NoClassDefFoundError)、链接错误(LinkageError)。这些错误是不可查的,因为它们在应用程序的控制和处理能力之

你可能感兴趣的:(Java,Java,异常,try-catch,throws/throw,finally)