java异常处理概述_Java 异常处理 之 异常概述与异常体系结构

一、异常概述

1、异常

在 Java 语言中,将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常)

指的是程序在执行过程中,出现的非正常的情况,最终会导致 JVM 的非正常停止。

在 Java 等面向对象的编程语言中,异常本身就是一个类,产生异常就是创建异常对象并抛出了一个异常对象。

Java 处理异常的方式是中断处理。

异常指的并不是语法错误,语法错误,编译不通过,不会产生字节码文件,根本不能运行。

二、异常体系

异常机制 其实是帮助我们找到程序中的问题。

java.lang.Throwable:类是 Java 语言中所有错误或异常的超类。其下有两个子类:

(1)Exception:异常,进行编译(写代码) java 程序出现的问题,程序员可以通过代码的方式纠正,使程序继续运行。

(2)Error:严重错误,无法通过处理的错误,只能事先避免,必须通过修改源代码,程序才能继续执行。经典代表:VirtualMachineError(堆内存溢出OutOfMemoryError,栈内存溢出StackOverflowError)

50f8a6f4dfa1f8918e9c75799f41392f.png

1 *

2 *java.lang.Throwable3 * |-----java.lang.Error:一般不编写针对性的代码进行处理。4 * |-----java.lang.Exception:可以进行异常的处理5 * |------编译时异常(checked)6 * |-----IOException7 * |-----FileNotFoundException8 * |-----ClassNotFoundException9 * |------运行时异常(unchecked,RuntimeException)10 * |-----NullPointerException11 * |-----ArrayIndexOutOfBoundsException12 * |-----ClassCastException13 * |-----NumberFormatException14 * |-----InputMismatchException15 * |-----ArithmeticException16 *

三、异常分类

1、Java 程序在执行过程中所发生的异常事件可以分为两类:

(1)Error:Java 虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重情况。比如:StackOverflowError和 OOM。一般不编写针对性代码进行处理;

(2)Exception:其他因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。如:空指针访问,网络连接中断,视图读取不存在的文件;

2、解决方法

对于这些错误,一般由两种解决方法:① 遇到错误就终止程序的运行;② 在编写程序时,就考虑到错误的检测、错误小时的提示,以及错误的处理;

捕获错误最理想的是在 编译期间,但有的错误只有在运行时才会发生。例如:除数为0,数组下标越界等;

3、异常分类

异常(Exception)的分类:根据编译时期还是运行时期来分类

da372dbeaf925b3cbef48cb87f662fc5.png                                  

3fb9079103c0b0e49fae91d7ff922b32.png

蓝色:非受检(unchecked)异常

红色:受检(checked)异常

4、运行时异常

(1)RuntimeException 运行时期异常(或它的子类)。又称非受检异常,即在运行时期,检查异常,在编译时期,运行异常不会编译器检测(不报错)。(如:空指针异常、数组下标越界、类型转换异常、数字格式异常)这些异常可以完全避免掉,编译器不要求强制处理的异常;

(2)对于这类异常,可以不作处理,因为这类异常很普遍,若全处理可能会对程序的可读性和运行效率产生影响;

5、编译时异常

(1)Exception 异常。除了RuntimeException系列以外的,都是编译时异常,又称为受检异常。在编译时期就会检查,如果没有处理异常,则编译失败。(如:IOException、日期格式化异常)

(2)指编译器要求必须处理的异常。即程序在运行时由于外界因素造成的一般性异常。编译器要求Java程序必须捕获或生命所有编译时异常。

(3)对于这类异常,如果程序不处理,可能会带来意想不到的结果。

0c136a380ce43da2313342d16ce1a899.png

三、异常的产生过程解析

异常的产生过程分析(分析异常的怎么产生的,如何处理异常)

81f9e60f856e9abfb33005c21490ffad.bmp

四、常见的异常

34c1afed6434bc8e0e2fee67ebd86e38.png

ArrayIndexOutOfBoundsException:数组下标越界异常

NullPointerException:空指针异常

ArithmeticException:数学运算异常

ClassCastException:类型转换异常

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值