异常处理Exception(二)

文章目录

  • 1、自定义异常类
    • 1、定义消息类
    • 2、自定义异常类
  • 2、调用
  • 3、测试
  • 总结

ABAP预定义的异常类在某些时候并不能精确地描述异常,此时就需要自定义异常类。

1、自定义异常类

1、定义消息类

在这里插入图片描述

2、自定义异常类

在Local Types中自定义异常类,当异常触发时,提示airline和connection不存在。

CLASS lcx_no_connection DEFINITION INHERITING FROM cx_static_check.
  PUBLIC SECTION.
    INTERFACES if_t100_message.

    METHODS constructor
      IMPORTING
        textid           LIKE if_t100_message=>t100key OPTIONAL
        previous         LIKE previous OPTIONAL
        airlineid        TYPE /dmo/carrier_id OPTIONAL
        connectionnumber TYPE /dmo/connection_id OPTIONAL.

    CONSTANTS:
      BEGIN OF lcx_no_connection,
        msgid TYPE symsgid VALUE 'ZMSG_KDLK',
        msgno TYPE symsgno VALUE '000',
        attr1 TYPE scx_attrname VALUE 'airlineid',
        attr2 TYPE scx_attrname VALUE 'connectionnumber',
        attr3 TYPE scx_attrname VALUE 'attr3',
        attr4 TYPE scx_attrname VALUE 'attr4',
      END OF lcx_no_connection.

    DATA airlineid TYPE /dmo/carrier_id READ-ONLY.
    DATA connectionnumber TYPE /dmo/connection_id READ-ONLY.

  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.

CLASS lcx_no_connection IMPLEMENTATION.
  METHOD constructor.
    super->constructor( previous = previous ).
    me->airlineid = airlineid.
    me->connectionnumber = connectionnumber.

    CLEAR me->textid.
    IF textid IS INITIAL.
      if_t100_message~t100key = lcx_no_connection.
    ELSE.
      if_t100_message~t100key = textid.
    ENDIF.
  ENDMETHOD.
ENDCLASS.

2、调用

lcx_no_connection之后,继续添加以下代码。查询/dmo/connection,在记录不存在的情况下,抛出自定义异常。

CLASS lcl_connection DEFINITION.
  PUBLIC SECTION.
    METHODS constructor
      IMPORTING
                i_airlineid        TYPE /dmo/carrier_id
                i_connectionnumber TYPE /dmo/connection_id
      RAISING   lcx_no_connection.
  PROTECTED SECTION.
  PRIVATE SECTION.
    DATA airlineid TYPE /dmo/carrier_id.
    DATA connectionnumber TYPE /dmo/connection_id.
    DATA fromairport TYPE /dmo/airport_from_id.
    DATA toairport TYPE /dmo/airport_to_id.
ENDCLASS.

CLASS lcl_connection IMPLEMENTATION.
  METHOD constructor.
    DATA fromairport TYPE /dmo/airport_from_id.
    DATA toairport TYPE /dmo/airport_to_id.

    SELECT SINGLE FROM /dmo/connection
    FIELDS airport_from_id, airport_to_id
    WHERE carrier_id = @i_airlineid
        AND connection_id = @i_connectionnumber
        INTO ( @fromairport, @toairport ).
    IF sy-subrc <> 0.
      RAISE EXCEPTION TYPE lcx_no_connection
        EXPORTING
          airlineid        = i_airlineid
          connectionnumber = i_connectionnumber.
    ELSE.
      me->airlineid = i_airlineid.
      me->connectionnumber = i_connectionnumber.
      me->fromairport = fromairport.
      me->toairport = toairport.
    ENDIF.
  ENDMETHOD.
ENDCLASS.

3、测试

main方法中添加以下代码,执行。

DATA connection TYPE REF TO lcl_connection.
DATA exception TYPE REF TO lcx_no_connection.

TRY.
    connection = NEW #( i_airlineid = 'XX' i_connectionnumber = '0000' ).
  CATCH lcx_no_connection INTO exception.
    out->write( exception->get_text( ) ).
ENDTRY.

在这里插入图片描述


总结

打完收工。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/582471.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

开箱即用的使用体验!Alibaba Cloud Linux 的演进之旅

随着云计算的发展&#xff0c;越来越多的云上用户对操作系统提出了新的诉求。在 2023 龙蜥操作系统大会阿里云分论坛上&#xff0c;阿里云操作系统团队贾正华分享了 Alibaba Cloud Linux&#xff08;以下简称“Alinux”&#xff09;的发展历程及未来展望&#xff0c;介绍了 Ali…

unittest_parameterized批量测试测试用例

import unittest from parameterized import parameterizeddef add(x, y):return xy"""问题&#xff1a;如果有三组数据需要测试&#xff1f;[(1,1,2), (1,2,3), (0,3,3)] """def get_data():return [(1, 2, 3), (3, 0, 3), (2, 1, 3)]# 定义测试…

第3篇:创建Nios II工程之Hello_World<二>

Q&#xff1a;上一期介绍完基本设计流程和实验原理&#xff0c;接着我们完成系统硬件设计部分&#xff0c;包括Platform Designer系统及Quartus工程。 A&#xff1a;依次搜索并添加Nios II Processor、JTAG UART、On-Chip Memory和System ID IP组件&#xff0c;连接各组件并As…

C#窗体控件ColorDialog

介绍 可以获取颜色&#xff0c;然后对其他控件的颜色属性进行设置。 构造方式 直接把ColorDialog控件拖动到Form窗口。 常用属性 AllowFullOpen 可以控制是否使用自定义颜色&#xff0c;true表示可使用&#xff0c;否&#xff0c;表示不可使用。 AnyColor 如果为tr…

Leetcode—682. 棒球比赛【简单】(stoi函数、accumulate函数)

2024每日刷题&#xff08;120&#xff09; Leetcode—682. 棒球比赛 实现代码 class Solution { public:int calPoints(vector<string>& operations) {vector<int> v;for(const string& oper: operations) {if(oper "") {v.push_back(v.back(…

渗透新思路 | 仿真环境下内存转储分析和模糊测试的全记录

本文由安全研究人员hugsy于2024年03月26日更新并发表于blahcat博客上&#xff0c;本文主要记录了其在进行内存安全和模糊测试任务时发现的一些技术实现方式&#xff0c;主要讨论的是仿真环境下内存转储分析和模糊测试方法。本文旨在为红队和蓝队研究人员提供新的思路&#xff0…

数字化技术可以促进中国企业创新吗?

数字化技术可以显著促进中国企业的创新。数字化技术&#xff0c;包括人工智能&#xff08;AI&#xff09;、区块链&#xff08;Blockchain&#xff09;、云计算&#xff08;Cloud computing&#xff09;、大数据&#xff08;big Data&#xff09;等&#xff0c;被称为ABCD技术&…

TruLens

文章目录 一、关于 TruLensHow it works 二、安装三、快速使用Get DataInCreate Vector StoreBuild RAG from scratchSet up feedback functions.Construct the appRun the app 一、关于 TruLens Evaluate and Track LLM Applications 官网&#xff1a;https://www.trulens.o…

【Redis 开发】详细搭建Redis主从,并了解数据同步原理

Redis主从搭建 Redis主从搭建Redis的主从架构数据全同步原理数据的增量同步优化Redis主从集群 Redis主从 搭建Redis的主从架构 主从节点可以实现读写分离&#xff0c;将都大量的读操作分担与诸多从节点当中去 从节点可以叫做slave或者replica 如何搭建&#xff1a; 在一台…

node 项目启动报 ERROR Failed to compile with 1 errors 错误

问题 node项目通过npm run dev启动时出现ERROR Failed to compile with 1 errors 错误&#xff0c;具体信息如下&#xff1a; ✖ WebpackCompiled with some errors in 366.81msERROR Failed to compile with 1 errors …

如何买到“30元以下”的免备案服务器?

对于预算有限的个人和小型企业来说&#xff0c;30 元以下免备案服务器的价格非常亲民。用户可以以极低的成本获得所需的服务器资源&#xff0c;这对创业者、个人开发者、学生和站长来说简直不要太划算&#xff0c;毕竟配置可以升级真不够后面再付费升级也行。 何为“免备案”&…

xLua背包实践

准备工作 环境&#xff0c;代码 在C#代码方面我们需要准备单例模式基类&#xff0c;AB包管理器&#xff0c;lua解析器管理器 详情请见AB包管理器 xlua详解 然后是Xlua包和AB包&#xff0c;具体导入方法也在上面的链接中 然后是lua的三个文件 具体代码&#xff1a; JsonUtil…

主观赋权法、客观赋权法、组合赋权法、评价指标体系构建

在科研领域&#xff0c;为了对某个研究主题进行深入的探讨和评估&#xff0c;我们往往需要构建一套科学合理的评价体系&#xff0c;并为其中的各项评价指标赋予相应的权重。比如&#xff0c;在评价一项新技术的性能时&#xff0c;我们可能会考虑其创新性、实用性、成本效益等多…

git的学习笔记

git的学习使用 参考了书和好多网上搜到的连接&#xff0c;忘了记录参考的了&#xff0c;太多了&#xff08;&#xff09;捋出来一个大致的较为全面的git个人使用流程。 &#xff08;一&#xff09;基本操作&#xff1a; 安装配置好git 创建目录 init 初始化一个仓库&#xff0…

Golang | Leetcode Golang题解之第55题跳跃游戏

题目&#xff1a; 题解&#xff1a; // 贪心算法 func canJump(nums []int) bool {cover : 0n : len(nums)-1for i : 0; i < cover; i { // 每次与覆盖值比较cover max(inums[i], cover) //每走一步都将 cover 更新为最大值if cover > n {return true}}return false } …

2024通信会|迈向智慧配电网建设新时代,锐捷网络发布双平面配电通信解决方案

近期,以“加快推进通信数智化,助力构建新型能源体系”为主题的2024年能源网络通信创新应用大会在四川成都圆满结束,会议围绕构建新型能源体系和新型电力系统建设需求,探讨能源网络通信创新应用的最新趋势与成果、“主、配、微”通信网一体化融合、配电通信网、通信数智化转型等…

41-数组 _ 数组作为函数参数

41-1 冒泡排序函数的设计 数组传参的时候&#xff0c;形参有2种写法&#xff1a; 1、数组 2、指针 往往我们在写代码的时候&#xff0c;会将数组作为参数传个函数 如&#xff1a;实现一个冒泡排序&#xff0c;将数组的数据排成升序 冒泡排序的核心思想&#xff1a; 1、两…

NGINX发布动态页面的方法

一、建立 [rootserver100 html]# vim index.php [rootserver100 html]# pwd /usr/share/nginx/html 二、下载PHP文件 [rootserver100 conf.d]# dnf install php.x86_64 -y 正在更新 Subscription Management 软件仓库。 无法读取客户身份 本系统尚未在权利服务器中注册。可…

国内十大CRM软件盘点2024:专家推荐+用户真实反馈

Zoho CRM软件即客户关系管理系统&#xff0c;这个概念自1999年由GartnerGroup公司提出以来逐渐演变&#xff0c;最初是为了填补ERP系统在客户关系管理方面的缺失&#xff0c;后来发展成了企业战略中不可或缺的工具。随着企业对客户管理的重视程度不断提升&#xff0c;越来越多的…

Socket套接字(UDP数据报)篇

Socket 概念数据报套接字DatagramSocketDatagramPacketInetSocketAddress 小结 概念 Socket套接字,是由系统提供用于网络通信的技术,是基于TCP/IP协议的网络通信的基本操作单元. 基于Socket套接字的网络程序开发就是网络编程. 数据报套接字 使用的是UDP(User Datagram Protocol…