二十异常捕获及处理详解

Posted biao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二十异常捕获及处理详解相关的知识,希望对你有一定的参考价值。

代码中被[]包含的表示可选,|符号分开的表示可选其一。

需求背景

我们在写存储过程的时候,可能会出现下列一些情况:

  1. 插入的数据违反唯一约束,导致插入失败

  2. 插入或者更新数据超过字段最大长度,导致操作失败

  3. update影响行数和期望结果不一致

遇到上面各种异常情况的时,可能需要我们能够捕获,然后可能需要回滚当前事务。

本文主要围绕异常处理这块做详细的介绍。

此时我们需要使用游标,通过游标的方式来遍历select查询的结果集,然后对每行数据进行处理。

本篇内容

  • 异常分类详解

  • 内部异常详解

  • 外部异常详解

  • 掌握乐观锁解决并发修改数据出错的问题

  • update影响行数和期望结果不一致时的处理

准备数据

  /*建库javacode2018*/
  drop database if exists javacode2018;
  create database javacode2018;

  /*切换到javacode2018库*/
  use javacode2018;

  DROP TABLE IF EXISTS test1;
  CREATE TABLE test1(a int PRIMARY KEY);

异常分类

  我们将异常分为mysql内部异常和外部异常

  mysql内部异常

  当我们执行一些sql的时候,可能违反了mysql的一些约束,导致mysql内部报错,如插入数据违反唯一约束,更新数据超时等,此时异常是由mysql内部抛出的,我们将这些由mysql抛出的异常统称为内部异常。

  外部异常

  当我们执行一个update的时候,可能我们期望影响1行,但是实际上影响的不是1行数据,这种情况:sql的执行结果和期望的结果不一致,这种情况也我们也把他作为外部异常处理,我们将sql执行结果和期望结果不一致的情况统称为外部异常。

Mysql内部异常

  示例1

test1表中的a字段为主键,我们向test1表同时插入2条数据,并且放在一个事务中执行,最终要么都插入成功,要么都失败。

  创建存储过程:

以上是关于二十异常捕获及处理详解的主要内容,如果未能解决你的问题,请参考以下文章

(二十二)异常捕获与用例断言失败截图

Java 异常的捕获与处理详解

Java 异常的捕获与处理详解

异常的捕获及处理

python入门19 异常及异常处理 异常捕获

java 异常的捕获及处理