繁体   English   中英

无法捕获 TYPE_NOT_FOUND 异常

[英]Can't catch TYPE_NOT_FOUND exception

我正在调用cl_abap_typedescr=>describe_by_name方法。 它可能会抛出TYPE_NOT_FOUND异常。 我来自 c#,在 c# 中很容易发现这样的错误。 但在 ABAP 中,我无法捕捉到异常。

首先是我不能在我的代码中使用TYPE_NOT_FOUND异常对象。 它只是不存在。 它继续捕获CX_ROOT也无济于事的事实。 它只是忽略了我的 try catch 子句并崩溃:

TRY .
  descr_ref0 ?= cl_abap_typedescr=>describe_by_name('iabc1').
CATCH cx_root.
  BREAK-POINT.
ENDTRY.

我假设您需要类型转换,因此为它提供了一个额外的步骤。

此语法不如新语法优雅,但这是我可以编译您的示例的唯一方法:

  data descr_ref1 type ref to cl_abap_typedescr.

  call method cl_abap_typedescr=>describe_by_name(
    exporting  p_name         = 'abc1'
    receiving  p_descr_ref    = descr_ref1
    exceptions type_not_found = 1 ).

  if sy-subrc <> 0.
    break-point.
  else.
    descr_ref0 ?= descr_ref1.
  endif. 

编辑:

您可以通过查看方法来判断使用了哪种类型的异常:

在此处输入图像描述

或者,您可以在编辑器中使用“模式”命令来获得正确的语法。

TYPE_NOT_FOUND不是基于类的异常 您需要使用旧语法并为每个异常分配一个非零值,然后检查SY-SUBRC该值是否再次出现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM