簡體   English   中英

如何在Epicor C#中引發異常

[英]How to throw exception in epicor C#

C#中與&THROW_PUBLIC等效的東西是什么或&THROW_PUBLIC是什么意思是ABL? 我對ABL不太了解,但需要將其轉換為C#。

Epicor 9.05中數據指令的代碼片段

If ttPart.ProdCode = '' then do:

   If lookup(SUBSTRING(ttPart.PartNum,1,3),'12-,13-,14-,15-',',') <> 0 then do:

    {lib\PublishEx.i &ExMsg = "'Please select a Product Group for this Part'"}
    {&THROW_PUBLIC}.

   End.

End.

&THROW_PUBLIC根本不是Progress ABL關鍵字,也不是任何標准功能。 最有可能是Epicor特有的。

為了更好地理解問題,也許您應該發布更多代碼!

但是:以&開頭可能是它成為預處理器的線索。 可以使用GLOBAL-DEFINESCOPED-DEFINE定義預處理器-在代碼中查找。

編譯程序時,對預處理器的任何引用(如{&name-of-preprocesor}都將替換為其定義。可以進行某些有限的檢查(例如,使用什么OS進行編譯)。

這是定義和使用兩個預處理器的示例。

&GLOBAL-DEFINE THROW_PUBLIC1 MESSAGE "HELLO 1".
&SCOPED-DEFINE THROW_PUBLIC2 MESSAGE "HELLO 2".

{&THROW_PUBLIC1}
{&THROW_PUBLIC2}

在預編譯器之后,該程序將如下所示:

MESSAGE "HELLO 1".
MESSAGE "HELLO 2".

THROW部分可能指示正在使用某種錯誤處理,例如THROW THROW-CATCH情況或類似情況。 他們是這樣寫的:

BLOCK-LEVEL ON ERROR UNDO, THROW. 

DEFINE VARIABLE i AS INTEGER     NO-UNDO.
ASSIGN 
    i = INTEGER("hello").

CATCH err AS Progress.Lang.Error:
    MESSAGE "Error is caught here" VIEW-AS ALERT-BOX.
END.

FINALLY:
    MESSAGE "This is run in the end" VIEW-AS ALERT-BOX.
END.

{&THROW_PUBLIC}。 在Epicor包含文件管理器\\ Exception.i中定義(此文件可能是xcode的,因此您無法讀取)。 這基本上跳到{&TRY_PUBLIC} / {&CATCH_PUBLIC}塊的末尾,並發布一個異常。

在C#中,它要容易得多:

throw new Ice.BLException("Please select a Product Group for this Part");

您可以使用標准的System.Exception,但是Ice.BLException(在Epicor.ServiceModel.dll中定義)有一些重載來記錄框架的其他部分可以顯示/記錄的額外信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM