[英]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-DEFINE
或SCOPED-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.