什么是 ABAP 编程语言里的 Exception 断点

简介: 什么是 ABAP 编程语言里的 Exception 断点

对于程序员来说,在调试器里单步调试,是一个强有力的排错工具。


但很多时候,我们从界面上看到了错误消息,但是不知道在哪里设置断点来调试,也就是找不到问题的突破口。


这个时候,Exception breakpoint 就成为了我们的好帮手。


通过一个具体的例子来说明。


假设我用 BSP 开发了一个 Web 应用。下图表格每个列,绑定到了 BOL model node.

我们仔细观察上图,第一行的最后一列,associated object 是空的。理论上来说,这是因为方法 GET_ASSOC_OBJ_DEF_ATTRIB 的实现出了问题。

所以我在该方法上设置了一个断点并开始调试。 令我惊讶的是,我发现第一行没有触发断点,而是按照我的预期触发了左边的第二、三、四行……。 为什么框架不调用我的第一行的 getter 方法? 然后我计划调试 BSP 框架,以了解第二行的 getter 方法是如何调用的。 经过一段时间与框架代码的斗争后,我改变了主意,因为我发现这不是调试复杂框架代码的有效方法。

我确实相信后端发生了一些异常,但被框架捕获了。 我在搜索按钮实现中设置了一个断点,因为可以肯定的是,异常仅在执行搜索后发生。

我动态创建一个新的异常。 由于我不知道异常的确切名称,我只能基于 CX_ROOT 创建断点,CX_ROOT 是 ABAP 里所有基于类的异常的超类。

那么我能做的就是按 F8、F8、F8……很快(十秒后)我发现一个可疑方法 GET_TABLE_CONTENT 中引发了一个异常。

点击 Display Trigger Location, 然后调试器定位到 GET_P_ASSOC_OBJ_DEF_ATTRIB 方法,指向了异常 CX_SY_NO_HANDLER:

在SAP ABAP编程中,异常 CX_SY_NO_HANDLER 是一种运行时异常,通常在异常处理过程中出现。这个异常表示在程序执行期间,没有找到适当的异常处理程序。具体而言,当系统无法匹配已发生异常的类型与任何现有的异常处理程序时,就会引发 CX_SY_NO_HANDLER 异常。


异常的含义:

  1. 未捕获的异常:CX_SY_NO_HANDLER 是未被捕获的异常。这意味着在程序的异常处理块中找不到能够处理特定异常类型的处理程序。
  2. 程序中断:当发生 CX_SY_NO_HANDLER 异常时,程序将被中断,并且系统会记录异常信息,以便进行调试和分析。
  3. 异常类型不匹配:通常,这个异常是由于异常类型与任何 CATCH 块中定义的异常类型不匹配而引起的。系统会搜索匹配的异常处理程序,但如果找不到,就会抛出这个异常。
相关文章
|
7月前
|
存储 SQL 网络协议
ABAP 编程语言中 Class(类)的设计原理剖析
ABAP 编程语言中 Class(类)的设计原理剖析
91 2
|
7月前
|
Shell Linux 应用服务中间件
ABAP 面试题:如何使用 ABAP 编程语言的 System CALL 接口,直接执行 ABAP 服务器所在操作系统的 shell 命令?
ABAP 面试题:如何使用 ABAP 编程语言的 System CALL 接口,直接执行 ABAP 服务器所在操作系统的 shell 命令?
113 0
|
7月前
|
Shell Linux 应用服务中间件
使用 ABAP 编程语言的 System CALL 接口,直接执行 ABAP 服务器所在操作系统的 shell 命令
使用 ABAP 编程语言的 System CALL 接口,直接执行 ABAP 服务器所在操作系统的 shell 命令
74 0
|
7月前
|
机器学习/深度学习 存储 监控
实现 ABAP 条件断点的三种方式分享
实现 ABAP 条件断点的三种方式分享
115 1
|
6月前
|
Java 编译器 BI
关于 ABAP 这门编程语言的编译器和解释器
关于 ABAP 这门编程语言的编译器和解释器
30 0
|
7月前
一静一动,一张一弛 - 通过具体的两个例子,学习 ABAP 动态断点的使用诀窍试读版
一静一动,一张一弛 - 通过具体的两个例子,学习 ABAP 动态断点的使用诀窍试读版
40 0
|
7月前
|
存储
什么是 ABAP 编程语言的 Used Memory 和 Allocated Memory
什么是 ABAP 编程语言的 Used Memory 和 Allocated Memory
54 0
|
7月前
ABAP 编程语言里的 Reference Semantic - 引用语义
ABAP 编程语言里的 Reference Semantic - 引用语义
41 0
|
7月前
使用 SAP ABAP 编程语言调用 Windows10 操作系统的 Powershell 命名并打印出执行结果
使用 SAP ABAP 编程语言调用 Windows10 操作系统的 Powershell 命名并打印出执行结果
43 0
|
7月前
|
存储 Java BI
聊聊 C 语言和 ABAP 这两门编程语言的关系
聊聊 C 语言和 ABAP 这两门编程语言的关系
57 0

热门文章

最新文章