Java异常

异常

概念: 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时是可以避免的。异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序。

异常发生的原因 :

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

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

  • 检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这时程序员无法预见的。
  • 运行时异常:运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
  • 错误:错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。

Java编程语言使用异常处理机制为程序提供了错误处理的能力

程序中预先设置好对付异常的处理方法-------->异常-------->对异常进行处理-------->处理完毕,程序继续运行

Java的异常处理是通过5个关键字来实现的:try、catch、finally、throw、throws

捕获异常
try:执行可能产生异常的代码
catch:捕获异常
finally:无论是否发生异常,代码总能执行

声明异常
throws:声明方法可能要抛出的各种异常

抛出异常
throw:手动抛出异常

使用try-catch块捕获异常,分为3种情况

在这里插入图片描述
第一种情况:正常
在这里插入图片描述
第二种情况:出现异常
在这里插入图片描述
第三种情况:异常类型不匹配

在这里插入图片描述

多重捕获块

一个 try 代码块后面跟随多个 catch 代码块的情况就叫多重捕获。
在这里插入图片描述
可以在 try 语句后面添加任意数量的 catch 块。
如果保护代码中发生异常,异常被抛给第一个 catch 块。
如果抛出异常的数据类型与 ExceptionType1 匹配,它在这里就会被捕获。
如果不匹配,它会被传递给第二个 catch 块。
如此,直到异常被捕获或者通过所有的 catch 块。

异常类型

Java 语言定义了一些异常类在 java.lang 标准包中。

标准运行时异常类的子类是最常见的异常类。由于 java.lang 包是默认加载到所有的 Java 程序的,所以大部分从运行时异常类继承而来的异常都可以直接使用。

Exception:异常层次结构的父类
ArithmeticException:算术错误情形,如以零作除数
ArrayIndexOutOfBoundsException:数组下标越界
NullPointerException:尝试访问null对象成员
ClassNotFoundException:不能加载所需的类
IIIegalArgummentException:方法接收到非法参数
ClassCastException:对象强制类型转换错误
InputMismatchException:输入类型不匹配,如输入数字而输入一个字符
NumberFormatException:数字格式转换异常,如把 “abc” 转换为数字

try-catch-finally块

在try-catch块后加入finally块

1.是否发生异常都执行
2.不执行的唯一情况 System.exit(1);

存在return的try-catch-finally块

try块内容——>catch块中return之前的内容——>finally块——>return
在这里插入图片描述

引发多种类型的异常

  • 排列catch语句的顺序:先子类后父类
  • 发生异常时按顺序逐个匹配
  • 只执行第一个与异常类型匹配的catch语句

throws声明异常,throw抛出异常

如果一个方法没有捕获到一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。

也可以使用 throw 关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。
在这里插入图片描述

异常的分类

在这里插入图片描述

开源日志记录工具log4j

日志(log)

  • 主要用来记录系统运行中一些重要操作信息
  • 便于监视系统运行情况,帮助用户提前发现和避开可能出现的问题,或者出现问题后根据日志找到原因

日志的分类
SQL日志、异常日志、业务日志

log4j是一个非常优秀的开源日志记录工具

  1. 控制日志的输出级别
  2. 控制日志信息输送的目的地是空间、文件等
  3. 控制每一条日志的输出格式

使用log4j记录日志步骤

  1. 在项目中加入log4j的JAR文件
    在这里插入图片描述
  2. 创建log4j.properties文件
    在这里插入图片描述
  3. 配置日志信息
    在这里插入图片描述
  4. 使用log4j记录日志信息
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值