Error-handling in PKGBUILDs is far from perfect

Hi, PKGBUILDs should die on failure, rather than just continue regardless of errors. Here's a little rant:
Why is it acceptable for ./configure to fail? Or make install to fail? Or the installation of just about any file? They could fail for lots of reasons, such as expecting a non-existent directory to exist, just being badly-written, or disk corruption, or running out of disk space. I see this lack of error-handling both in official packages and in the AUR.
Failing on an error is a fundamental part of programming, and BASH makes a mockery of it. And then Linux developers seem to get brainwashed by BASH into believing that mixing important and non-important errors together, then just ignoring all the errors, is an acceptable programming practice. It's not - it's a comedy of errors (excuse the pun).
SourceMage handles this problem by having one huge command constructed with && at the end of each line, so at least will fail on error.
Gentoo is using its custom die command more often these days (|| die), but my proposal is in limbo, presumably because "SpanKY" overrules every other dev (little bit of Gentoo politics there ).
The current practice of make || return 1 is correct, but || return 1 should be used far more often - example  (notice the looped use of install, and the annoyance of having to check $? after the loop). "More often" includes make install even if it's on the final line, both for consistency, and so it is not forgotten to be added when further lines are added to the end (e.g. to install the license/documentation files).
I'll place this on flyspray after a bit of feedback.
Edit: I'll distro-hop instead.
Last edited by brebs (2008-04-21 13:55:33)

I'm as guilty as anyone in this.  However, I always use it on the initial "configure" and "make install" lines where there is a lot of output.  I tend to miss it when installing individual files at the end (e.g. Licences, icons...) because I can see if they failed from the output.

Similar Messages

  • How far from perfection is this application?

    There is to many breaks, the support is to slow, Adobe seems to enjoy to slowly fcuk their customers.
    There is to many breaks in the production line.
    Like now:
    You cant transform a sentence to a link.
    Come on, get real there, at the largest f-ing software firm in the world!
    Mats

    The forum is generally the best place to initially ask questions, since fellow users can both provide answers and benefit from the discussion. The support team and development teams both monitor the forum, but the support team's first responsibility is to provide live chat support and the development team's first responsibility is to develop the product.
    If you're not able to get a timely answer here, Adobe Muse Technical Support is available via chat here: http://helpx.adobe.com/contact/. Select product "Muse", then topic "Using my product or service", then click "I still need help..." to bring up the chat option and click "Chat Now."
    As for making a sentence a link, select it with the Text Tool and then select the page to link to in the Hyperlink combobox in the Control Strip, or type the URL directly.
    You're most likely to receive timely responses here to posts that include clear and complete descriptions of the design you're attempting to achieve or the bug you're encountering, along with the URL of the page(s) in question and screenshots of behavior in Muse, when appropriate.
    FYI, use of profanity in posts may result in your posts being deleted by forum moderation and/or your account being suspended due to violation of forum use policies.

  • Error handling in File - XI - SOAP scenario without BPM

    Hello!
    We have a File -> XI -> SOAP scenario without BPM. The problem is that if the Web Service sends back an error XI tries to reprocess the same message again and again instead of taking the next one.
    We do not want set the retry interval to NULL because most error cases are temporary connection problems and then also those messages would not automatically be reprocessed any more.
    We also have to use BE instead of EO, otherwise the Web Service will not return a response. But we need the response to be sure that the processing was successful. The message volume in this scenario is quite high and we do not want to use BPM only for the error handling.
    I know that from SP19 some additional adapter modules are available for async - sync scenarios without BPM. I tried to configure it like described in File - RFC - File without a BPM - Possible from SP 19. but it did not solve the problem. Does anybody have any other ideas? Thanks.
    Regards, Tanja

    Hi Tanja,
    >>>The volume is 3000 messages/day on business days and 700 messages/day during weekends but the traffic will increase in the future
    I think, you should check that out. It is assumedly only 2 days work to build a scenario:
    IDoc -> BP
    BP <-> SOAP/HTTP
    BP -> IDoc (Acknowledgement)
    In the process you need a condition branch, where you decide success or not. You need 2 Interface Mappings for filling the ALEAUD.
    Just send 1000 IDocs to the Test-XI and look to performance monitoring at Runtime Workbench, to find out, how many message will be processed in one hour. Assumedly 3000 and more per day should be possible. The advantage would be to reduce number of systems (no file system) and messages (better monitoring) and using the standard (better maintenance).
    >>>So you are suggesting I should use HTTP adapter and then add the SOAP header manually in a mapping?
    Yes, build the SOAP envelop during the mapping. Most easy is to use XSL or, if your mapping is ready, an additionsal XSL. You can put the error into the Acknowledgement to see it in ERP transaction WE02.
    Filling of ALEAUD fields:
    E1ADHDR/MESTYP: original message type
    E1ADHDR/E1STATE/DOCNUM: original IDoc number
    E1ADHDR/E1STATE/STATUS: 68 in case of error, 53 in case of success
    E1ADHDR/E1STATE/STATXT: Short description for R/3 user what has happend
    I ve done such a scenario several times. That works without any problems.
    Regards,
    Udo

  • How to create a generic error handling proxy?

    Hello,
    i have few services proxies.
    I want to create a generic error handling osb proxy which does only errorhandling.
    This proxy would be called by all my services.Now suppose my services proxies would throw any error,the control will pass to error handling block of proxy..from there i will call this generic errorhandling proxyusing a service callout or publish action.In this proxy i want to do all my error handling based on 'n' conditions.and i want to pass the message to the fault variable of services proxy..kindly suggest ways..*main challenge is passing the message to the fault variable of services proxy*

    Hi,
    For generic error handling framework or common error handling framework...create a bpel process which takes the error details payload and sends the inf/data as email to the particular receipients.
    create business process with bpel process and proxy using business service.so wen ever error occurs at stage or route or proxy level ..call error handler action in OSB.Assign error handler details to the bpel input payload.
    FOR EX:
    <soap-env:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <com:test>
    <com:ProcessInfo>testDetails</com:ProcessInfo>
    <com:BusinessProcessName>testprocess</com:BusinessProcessName>
    <com:BusinessProcessInstanceId>{fn-bea:uuid()}</com:BusinessProcessInstanceId>
    <com:BusinessProcessStep>ReqLayer</com:BusinessProcessStep>
    <com:ErrorCode>{string($fault/ctx:errorCode)}</com:ErrorCode>
    <com:ErrorType>Technical</com:ErrorType>
    <com:StatusCode>Error</com:StatusCode>
    <com:ImplementationCode>OSB</com:ImplementationCode>
    <com:ErrorDescription>{string($fault/ctx:reason)}</com:ErrorDescription>
    <com:ErrorDateTime>{fn:current-dateTime()}</com:ErrorDateTime>
    <com:Node>{string($fault/ctx:location/ctx:node)}</com:Node>
    <com:Path>{string($fault/ctx:location/ctx:path)}</com:Path>
    </com:test>
    </soap-env:Body>
    this assign the error details values to the bpel process.

  • Using AIA for Error Handling. Logging and Notification Services

    hi,
    In our project we usie OSB and BPEL for integrating different applications.
    There is a suggestion that we should use AIA to just use the Error Handling, Logging and Notification services from AIA. I am not sure about this use case, as most of these services mentioned can be replicated in BPEL. Except for the AIAAsyncExceptionHandling BPEL process, i guess all other functionalties provided by AIA can be easily developed in BPEL or OSB alone.
    However, would like to hear from you guys about this particular use case. Is it advisable?

    Hi,
    It's an issue with 10.1.3.4 OBIEE. (whem using IBM LDAP)
    References
    BUG:7363517 - INTERNAL BI FAILURE ON STARTUP
    They issue can be resolved by setting LD_PRELOAD=/path/libibmldap.so
    Here are the steps:
    . sa-init.sh
    export LD_PRELOAD=/path/libibmldap.so

  • Messages from PI are successful , but not shown in AIF error handling and monditoring

    Dear All,
    We have messages being triggered from PI to proxy and to AIF.
    Messages status is shown as successful in sxmb_moni transaction but I don't get to see these in /AIF/err - error handling and monitoring transaction.
    WHat could be the possible reason? would there be any missing authorization.
    Note: this is working in Development but having this issue in test environment.
    Thanks and Regards,
    Archana

    Hi Archana,
    About ERR_WEB, probably run an old version, but this won't help you either, I think.
    Another tip is to look in PI:
    Is your service synchronous? For synchronous messages PI only persists the message in PI's message store if the abap proxy returns an error, such as a SOAP Fault. If your abap proxy is not returning an error, then make sure it does. You can raise an application error in AIF.
    If PI already receives a SOAP fault, then I suggest you to check if the message was stored in PI: see SAP note 872388 to guide you on this task.

  • Exit from CIN within Error Handling Sub-Function

    I have a CIN which has the code divided betwee the CINRun() function, a number of other functions & a #included .C file. I want to put some error handling into my CIN, so if an error occurs I want execution to return from the CIN to LabVIEW immediately... however, my error handling is currently done in one of the other functions, and may be called from CINRun,
    functions, or the #included .C file. Is there any neat/handy/nice way of universally/globally breaking out of or bombing out of the CIN if the error handling code gets called?

    Michael.Johnson wrote:
    I have a CIN which has the code divided betwee the CINRun() function, a number of other functions & a #included .C file. I want to put some error handling into my CIN, so if an error occurs I want execution to return from the CIN to LabVIEW immediately... however, my error handling is currently done in one of the other functions, and may be called from CINRun,
    functions, or the #included .C file. Is there any neat/handy/nice way of universally/globally breaking out of or bombing out of the CIN if the error handling code gets called?
    You seem to want to do structured ecxeption handling. This however is something only really supported by C++ and other object oriented languages. Standard C can do that only with quite some header macro magic and in general is done in a way, patented by Borland, if I remember correctly. To make things more complicated, writing CINs in C++ is not supported by LabVIEW and requires quite some knowledge about your specific compiler environment and linker to get it right on your own, and no NI won't support C++ creation of CINs.
    You will prabably have to modify your C code quite a bit to get it the way you want. Considering that you will have to make more or less involved changes to your C code anyhow, I would recommend you look into creating a shared library instead and calling that through the Call Library Node. CINs are from the past and support for them will be getting less and less with time as it adds almost no advantages to shared libraries anymore and has some disadvantages in comparison, such as proprietary solution, difficult to support and possible compatibility issues in the future.
    Rolf Kalbermatter
    Rolf Kalbermatter
    CIT Engineering Netherlands
    a division of Test & Measurement Solutions

  • Error handling from PCO Query

    Hi,
    In my project I am integrating with a PLC through SAP PCO and OPC server.
    I am currently testing error handling if something fails on any of the involved systems.
    As a first test I stopped the agent instance that I use to read data from the PLC.
    When I try to write through the agent instance with a PCO Quaery I get no errors.
    The 'Success' attribute of the PCO Query is 1.
    The 'LastErrorMessage' attribute is empty.
    The only indication is the 'Output'which contains an error message.
    <?xml version="1.0" encoding="UTF-8"?>
    <Rowsets CachedTime="" DateCreated="2015-03-19T09:58:49" EndDate="2015-03-19T09:58:48" StartDate="2015-03-19T08:58:48" Version="14.0 SP5 Patch 12 (1-okt-2014)">
         <Messages>
              <Message>PoederMagazijn/ATS PLC/General/NewDataReady_InputTypeMessage: java.net.ConnectException: Connection refused: connect</Message>
         </Messages>
    </Rowsets>
    However, the same <Message> tags are used for success messages as well. So there is no clear way to identify an error.
    Is there any other way I can be sure the PCO query was able to write and catch any errors?
    FYI: we are using PCO 2.3 and MII 14.0
    Thanks!

    A small update. I tried again by upgrading the PCO version to 15.0 But still the same.
    I did the following 2 test cases:
    Unplug the UTP cable to the PLC and write data via PCO query
    Disable the agent instance and write data via PCO query
    In both cases the PCO Query returned the following output:
    Success: 1
    LastErrorMessage: <empty>
    The only information that I get is in the results but it is not a good practice to interpret this because I don't know all the possible messages.
    Result for Case 1:
    <?xml version="1.0" encoding="UTF-8"?><Rowsets CachedTime="" DateCreated="2015-03-26T14:13:18" EndDate="2015-03-26T14:13:12" StartDate="2015-03-26T13:13:12" Version="14.0 SP5 Patch 12 (1-okt-2014)">
        <Messages>
            <Message>PoederMagazijn/ATS PLC/M1 Order Dispatch/ProductDescription: Unspecified error</Message>
            <Message>PoederMagazijn/ATS PLC/M1 Order Dispatch/ProductDescription: Operation failed</Message>
        </Messages>
    </Rowsets>
    Result for Case 2:
    <?xml version="1.0" encoding="UTF-8"?><Rowsets CachedTime="" DateCreated="2015-03-26T12:11:37" EndDate="2015-03-26T12:11:35" StartDate="2015-03-26T11:11:35" Version="14.0 SP5 Patch 12 (1-okt-2014)">
        <Messages>
            <Message>PoederMagazijn/ATS PLC/M1 Order Dispatch/OrderQuantityTarget: java.net.ConnectException: Connection refused: connect</Message>
            <Message>PoederMagazijn/ATS PLC/M1 Order Dispatch/OrderQuantityConfirmed: java.net.ConnectException: Connection refused: connect</Message>
        </Messages>
    </Rowsets>
    Please advice. I cannot provide any transaction integrity at this time. I would assume this to be one of the base principles of PCO.

  • How to take control back from service error handler in osb

    I am using osb to send data to multiple services at the same time.since x query is a procedural language if any single operation fails the flow goes to service error handler which calls a BPEL webservice and logs the error in a database but the control doesnt comes back to my code I have tried everything including RESUME,REPLY operations but all in vain similarly i cannot use service callout call to my business service because its not allowing to select my BPEL wsdl operation

    If your statement "the control doesnt comes back to my code" means you expect that your xquery will continue in processing than your expectations are just too high. :-)
    Resume action is supposed to resume the next action in the message flow. It means the action that follows the action which caused an error.

  • RDLC Reports with Custom Font - Error HRESULT E_FAIL has been returned from a call to a COM component.

    Hi,
    I got an ASP.NET MVC (Razor View Engine and C#) application running on a Windows Azure Web Role.
    I use RDLC local reports to create pdf files with printable price tags with respective barcodes.
    I got it working on Azure after installing the barcode font (TrueType) using a start-up task. Recently, it stopped working without me changing anything related to this functionality.
    I'm getting the following error and so far I didn't find any solution. I know the problem is the barcode font because the pdf is generated well with a standard font like Arial. Also, it works perfectly with barcodes when running the app
    locally on my computer. 
    Error HRESULT E_FAIL has been returned from a call to a COM component.
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
    Exception Details: System.Runtime.InteropServices.COMException: Error HRESULT E_FAIL has been returned from a call to a COM component.
    Source Error:
    An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
    Stack Trace:
    [COMException (0x80004005): Error HRESULT E_FAIL has been returned from a call to a COM component.]
    System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo) +0
    Microsoft.ReportingServices.Rendering.RichText.TextRun.ShapeAndPlace(Win32DCSafeHandle hdc, FontCache fontCache) +1450
    Microsoft.ReportingServices.Rendering.RichText.TextRun.GetWidth(Win32DCSafeHandle hdc, FontCache fontCache, Boolean isAtLineEnd) +30
    Microsoft.ReportingServices.Rendering.RichText.LineBreaker.GetLine(Paragraph paragraph, TextLine line, Win32DCSafeHandle hdc, FontCache fontCache, FlowContext flowContext, Single left, Single right, Single height, Stack`1 lineRunsIndex, Stack`1 lineRunsCharIndex, Int32 lineIndents) +266
    Microsoft.ReportingServices.Rendering.RichText.LineBreaker.FlowParagraph(Paragraph paragraph, Directions direction, Win32DCSafeHandle hdc, Single dpiX, FontCache fontCache, FlowContext flowContext, Boolean keepLines, SizeF flowContextSize, Int32& contentOffset) +768
    Microsoft.ReportingServices.Rendering.RichText.LineBreaker.Flow(TextBox textBox, Win32DCSafeHandle hdc, Single dpiX, FontCache fontCache, FlowContext flowContext, Boolean keepLines, Single& height) +617
    Microsoft.ReportingServices.Rendering.RichText.LineBreaker.Flow(TextBox textBox, Graphics g, FontCache fontCache, FlowContext flowContext, Boolean keepLines, Single& height) +182
    Microsoft.ReportingServices.Rendering.RichText.TextBox.MeasureFullHeight(TextBox textBox, Graphics g, FontCache fontCache, FlowContext flowContext, Single& contentHeight) +759
    Microsoft.ReportingServices.Rendering.HPBProcessing.TextBox.CalculateVerticalSize(PageContext pageContext) +467
    Microsoft.ReportingServices.Rendering.HPBProcessing.TextBox.DetermineVerticalSize(PageContext pageContext, Double topInParentSystem, Double bottomInParentSystem, List`1 ancestors, Boolean& anyAncestorHasKT, Boolean hasUnpinnedAncestors) +35
    Microsoft.ReportingServices.Rendering.HPBProcessing.PageItem.CalculateVertical(PageContext pageContext, Double topInParentSystem, Double bottomInParentSystem, PageItem[] siblings, List`1 ancestors, Boolean& anyAncestorHasKT, Boolean hasUnpinnedAncestors, Nullable`1 sourceWidth) +977
    Microsoft.ReportingServices.Rendering.HPBProcessing.Tablix.AddRowMember(TablixMember rowMember, Int32 colIndex, Int32 rowSpan, Int32 colSpan, LevelInfo childInfo, PageContext pageContext, Double updateWidth) +1104
    Microsoft.ReportingServices.Rendering.HPBProcessing.Tablix.CreateRowMemberChildren(Tablix tablix, TablixMember rowMemberParent, Int32 defTreeLevel, Boolean parentBorderHeader, Int32 parentRowIndex, Int32 parentColIndex, Int32 sourceIndex, Boolean resetContext, Boolean parentHasFooters, LevelInfo parentLevelInfo, PageContext pageContext) +4255
    Microsoft.ReportingServices.Rendering.HPBProcessing.Tablix.CreateRowMemberChildren(Tablix tablix, TablixMember rowMemberParent, Int32 defTreeLevel, Boolean parentBorderHeader, Int32 parentRowIndex, Int32 parentColIndex, Int32 sourceIndex, Boolean resetContext, Boolean parentHasFooters, LevelInfo parentLevelInfo, PageContext pageContext) +3657
    Microsoft.ReportingServices.Rendering.HPBProcessing.Tablix.CreateTablixRows(Tablix tablix, TablixMember rowMemberParent, Int32 defTreeLevel, Boolean parentBorderHeader, Int32 parentRowIndex, Int32 parentColIndex, List`1& pageStructMemberCell, Boolean ignoreTotals, Boolean& finishLevel, Boolean parentHasFooters, CreateItemsContext createItems, Double startInTablix, Double endInTablix, PageContext pageContext) +4341
    Microsoft.ReportingServices.Rendering.HPBProcessing.Tablix.CreateTablixItems(Tablix tablix, PageContext pageContext, CreateItemsContext createItems, Double startInTablix, Double endInTablix) +239
    Microsoft.ReportingServices.Rendering.HPBProcessing.Tablix.CreateVertically(PageContext pageContext, CreateItemsContext createItems, Double startInTablix, Double endInTablix, Double topInParentSystem) +374
    Microsoft.ReportingServices.Rendering.HPBProcessing.Tablix.DetermineVerticalSize(PageContext pageContext, Double topInParentSystem, Double bottomInParentSystem, List`1 ancestors, Boolean& anyAncestorHasKT, Boolean hasUnpinnedAncestors) +662
    Microsoft.ReportingServices.Rendering.HPBProcessing.PageItem.CalculateVertical(PageContext pageContext, Double topInParentSystem, Double bottomInParentSystem, PageItem[] siblings, List`1 ancestors, Boolean& anyAncestorHasKT, Boolean hasUnpinnedAncestors, Nullable`1 sourceWidth) +977
    Microsoft.ReportingServices.Rendering.HPBProcessing.PageItemContainer.DetermineContentVerticalSize(PageContext pageContext, Double topInParentSystem, Double bottomInParentSystem, List`1 ancestors, Boolean& anyAncestorHasKT, Boolean hasUnpinnedAncestors, Boolean resolveState, Boolean resolveItem) +496
    Microsoft.ReportingServices.Rendering.HPBProcessing.PageItemContainer.DetermineVerticalSize(PageContext pageContext, Double topInParentSystem, Double bottomInParentSystem, List`1 ancestors, Boolean& anyAncestorHasKT, Boolean hasUnpinnedAncestors) +281
    Microsoft.ReportingServices.Rendering.HPBProcessing.PageItem.CalculateVertical(PageContext pageContext, Double topInParentSystem, Double bottomInParentSystem, PageItem[] siblings, List`1 ancestors, Boolean& anyAncestorHasKT, Boolean hasUnpinnedAncestors, Nullable`1 sourceWidth) +977
    Microsoft.ReportingServices.Rendering.HPBProcessing.ReportSection.NextPage(RPLWriter rplWriter, Int32 pageNumber, Int32 totalPages, Double top, Double availableHeight, ReportSection nextSection, Boolean isFirstSectionOnPage) +1382
    Microsoft.ReportingServices.Rendering.HPBProcessing.Report.NextPage(RPLWriter rplWriter, Int32 totalPages) +384
    Microsoft.ReportingServices.Rendering.HPBProcessing.HPBProcessing.GetNextPage(RPLReport& rplReport) +437
    Microsoft.ReportingServices.Rendering.ImageRenderer.PDFRenderer.Render(Report report, NameValueCollection deviceInfo, Hashtable renderProperties, CreateAndRegisterStream createAndRegisterStream) +1021
    Microsoft.ReportingServices.Rendering.ImageRenderer.RendererBase.Render(Report report, NameValueCollection reportServerParameters, NameValueCollection deviceInfo, NameValueCollection clientCapabilities, Hashtable& renderProperties, CreateAndRegisterStream createAndRegisterStream) +93
    My source code:
    LocalReport report = new LocalReport();
    // Rdlc file path
    report.ReportPath = Server.MapPath("~/Reports/PriceTags.rdlc");
    // Data source
    report.DataSources.Add(new ReportDataSource("productsDataSet", dataset1));
    // Some parameters
    ReportParameterCollection reportParameters = new ReportParameterCollection();
    reportParameters.Add(new ReportParameter("currency", "EUR"));
    reportParameters.Add(new ReportParameter("precision", 2));
    report.SetParameters(reportParameters);
    // FileContentResult GenPdf(LocalReport report, string filename)
    return GenPdf(report, "Price Tags");
    Any help on this issue would be welcome and sorry for any grammar mistakes.
    Thanks in advance.
    Vitor Pinto

    Hi Vitor,
    Thanks for your posting!
    It seems that the error may have more than one possibilities. I recommend you could try to use the Azure remote debugger to debug your cloud service project on Azure instance. Please see this tutorials:
    http://blogs.msdn.com/b/cie/archive/2014/01/24/windows-azure-remote-debugging.aspx
    You could debug your code using the cloud service URL.
    And you could enable the Diagnostics feature for collecting Logging Data by Using Azure Diagnostics (http://msdn.microsoft.com/library/gg433048.aspx).
    Regards,
    Will
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • Error Handling in Forms

    Dear all,
    we are using oracle developer suite 10g r2 with oracle database 10g r2 against windows server 2003.
    Error handling is a very big issue.
    i try to do the following, just correct me, or make the trigger more efficient.
    i face unexpected messages, like a message two time displayed, sometime important message never displayed.
    i just set the :system.message_level =20 in the when-new-form-instance trigger.
    and create on-error trigger like below
    declare
    errcode number:=error_code;dbmserrcode number;dbmserrtext varchar2(200);
    formtxt varchar2(200);
    errtype varchar2(3);
    begin
    --------- user defined database exceptions errors raised by --RAISE_APPLICATION_ERROR
    IF DBMS_ERROR_CODE in (-20738,.......) then
    raise form_trigger_failure;
    end if;
    if error_code=50017 then
    message('duration must be between 0 and 23');message(' ',no_acknowledge);
    raise form_trigger_fialure;
    elsif
    error_code=40202 then
    clear_message;
    message('please provide the required fields.');message(' ',no_acknowledge);
    raise form_trigger_fialure;
    elsif error_code=50022 then
    clear_message;
    message('time must be in the correct format.');message(' ',no_acknowledge);
    raise form_trigger_fialure;
    end if;
    if error_code in (40509,40508) then
    dbmserrcode:=dbms_error_code; dbmserrtext:=dbms_error_text;
    if dbmserrcode=-1438 then
    clear_message;
    message('your number is too large.try again.');message(' ',no_acknowledge);
    raise form_trigger_fialure;
    elsif dbmserrcode=-1400 then
    clear_message;
    message('your forgot to provide a value.try again.');message(' ',no_acknowledge);
    raise form_trigger_fialure;
    elsif dbmserrcode=-2291 then
    clear_message;
    message('header is not found for this insertion.');message(' ',no_acknowledge);
    raise form_trigger_fialure;
    elsif dbmserrcode=-1 then
    clear_message;
    message('record already exists');message(' ',no_acknowledge);
    raise form_trigger_fialure;
    else
    clear_message;
    message(error_code||' : '||error_text);message(' ',no_acknowledge);
    raise form_trigger_fialure;
    end if;
    else
    clear_message;
    message(error_code||' : '||error_text);message(' ',no_acknowledge);
    raise form_trigger_fialure;
    end if;
    exception
    when others then
    if dbms_error_code=-20738 then
    clear_message;
    message('Error: absent or later record errror from the database trigger.);
    raise form_trigger_failure;
    elsif .....
    esle
    clear_message;
    message(error_code||' : '||error_text);message(' ',no_acknowledge);
    raise form_trigger_fialure;
    end if;
    end;any suggession?
    Regards

    i must come with a plsql code which handle every error and suppress unnecessary messages.Good luck with that. No matter how well thought out or planned, you're not going to be able to take all scenarios into account. The design of an exception handler takes time to address all possible scenarios you want handled and even then, you're not likely to handle every situation in the beginning.
    could we implement the oracle ebusiness error handling procedures here in our application?if yes, then where could we find that procedure?>
    I've dug through that code and it is not a thorough as you think it is. It handles specific situations and then defaults the rest. It is a good model for your own exception handler, however. That is what I used it for. :) I don't recall which library it is in, but I'll look around and if I find it, I'll post it.
    I agree with Andreas's comment...
    Simply remove your ON-ERROR-trigger, then you have a default. That's nothing better or worse than what apex has.I'm not too familiar with Apex; I've worked with it, but it's been a little while. Even with Apex, you're going to have to develop a customized Exception Handler so more intuitive or application specific messages are displayed in response to an exception.
    As to Andreas's comment...
    For your own error-handling... The "simplest" way in my eyes is create your own error-table where you have appropiate columns for the error-code and the error-type (FRM,ORA,Whatever), then in your ON-ERROR-trigger read the appropiate record from that table and show the error. You could also have a flag in your table which decides what to do with a specific error (Show as Message, Show as Alert, Don't show at all) and react accordingly.This is exactly what we implemented in our application. We created a set of tables that contain all of the Oracle Runtime errors and their attributes (Error Type, Severity Level, etc). Then we wrote a standard On-Error trigger that is subclassed to all of our forms that calls a Library "On_Error" package. This package evaluates the exception raised, compares it to the database entry for the error and then displays an appropriate message depending on the Severity Level, Error Type (ORA or FRM) and Message Type (Informational, Error, Caution) and we display the message in either the Status Bar, Note Alert, Caution Alert or Stop Alert or it is supressed. If an error is not found in the table, then it is displayed in a Stop Alert as an "Unhandled Exception." The second table I mentioned contains all of the messages used by our application and is cross referenced with the table that contains the Oracle messages. By simply assigned one of our messages to an Oracle message - our package will display our message instead of the default Oracle Message. Yes, this took sometime to build and test and once implemented, we spent another couple of months perfecting it, but now it is pretty solid and we haven't had to modify it in over a year.
    While this level of complexity may be overkill for your application, it does offer the greatest flexibility in the long-run. Also, if your application must support multiple languages, having all of your messages in a table make internationalization extremely easy. :)
    The point of all this, is that no matter which system you use (Forms, Apex, or Java) you will still need to invest some time into designing an Excpeiton Handling method for your application and then implement it accross the application. This is not something you can develop in a short period of time and it will not be perfect in the beginning. However, in the long-run, you will be happy you spent the time up-front to build a flexible and robust Exception Handling system.
    Craig...

  • Error handling for master data with direct update

    Hi guys,
    For master data with flexible update, error handling can be defined in InfoPackege, and if the load is performed via PSA there are several options - clear so far. But what about direct update...
    But my specific question is: If an erroneous record (e.g invalid characters) occur in a master data load using direct update, this will set the request to red. But what does this mean in terms of what happens to the other records of the request (which are correct) are they written to the master data tables, so that they can be present once the masterdata is activated, or are nothing written to masterdata tables if a single record is erroneous???
    Many thanks,
    / Christian

    Hi Christian -
    Difference between flexible upload & Direct upload is that direct upload does not have Update Rules, direct upload will have PSA as usual & you can do testing in PSA.
    second part when you load master data - if error occurs all the records for that request no will be status error so activation will not have any impact on it i.e. no new records from failed load will be available.
    hope it helps
    regards
    Vikash

  • OSB 10gR3 Error handling and reporting action approach

    My use case:
    Simple Proxy service routes to an external web service created as Business service in OSB
    Whenever there is transport error/soap fault from the external web service, that error needs to be reported along with the original request received by the proxy service.
    What I have tried so far?
    Created a error handler/stage in the route node of my proxy service. Within that stage, added a report action to report $body which contains the error received from the external service. I created a report index key/value to report for this request, I used a specific element in the body of the original request sent to the proxy service.
    Within the route error handling stage, I realized that $body which had my original request to the proxy service lost its content and replaced by the fault from external WS. So I made a copy of $body in my request pipeline and tried to use an element from that copy to index my failed request. But the copied variable always seem to be empty within the error handling stage.
    So, my questions to the experts,
    1)What variables are visible within the error handling stage/scope?
    2)What is the best way(less overhead) to preserve my original request as $body context variable is already changed with fault by the time error handler is invoked? Remember I wanted to report the original request only incase of error, for success cases I don't care/I don't want to un-necessarily add an overhead of copying to a vairbale.
    3)Is there another proper way to simply report the original request received by proxy and fault received from external service for a given key in the request, say orderId
    Sample proxy request:
    <MyData>
    <OrderId>123</OrderId>
    </MyData>

    1)What variables are visible within the error handling stage/scope? $fault - http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/userguide/context.html#wp1051816
    $body - http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/userguide/context.html#wp1103311
    2)What is the best way(less overhead) to preserve my original request as $body context variable is already changed with fault by the time error handler is invoked? Remember I wanted to report the original request only incase of error, for success cases I don't care/I don't want to un-necessarily add an overhead of copying to a variable.Can you print $body and $fault variables in your error handler?. Are they different ? What I'm suspecting is the back-end webservice is faulting (returning soap-fault and http response =5xx). There is no other way I can think of than copying the contents of $body to a separate variable.
    Thanks
    Manoj

  • ESB error handling and notification features

    Hello everyone,
    I am newbie to oracle SOA ESB. I am an oracle apps guy.
    This being my first post to this forum, I have a lot of questions. :-)
    For a small intergration requirement, we are looking for a good integration tool
    Some requirements are:
    1) Flat files will be generated by concurrent programs on oracle apps which need to be transferred to legacy systems.
    2) Pick the data from apps tables and insert them into another database. Not much translation required.
    After some research, found ESB to be a good fit.
    Before actually start using it, we wanted to do a couple of POCs.
    So far we are using shell scripts for ftp process. We opted for an integration tool to have DB to DB transmission. Apart from this we need better error handling and error notification mechanism.
    Some error conditions:
    1) Unavailability of ftp server or Database server.
    2) Permission issues. Say some files may not have read, write, deletion permissions. They need to be caught and notified.
    3) Mandatory field missing while inserting data which is read from a flat file into a DB table etc..
    My initial thoughts on error handling are:
    Connection error: To retry for connection errors. If the retry fails send notification via email and also write the failed connection details into an error log file(apart from the server log file).
    Data mismatch: NOtification to be sent with the error details.
    I would like to know What happens to the file if the destination ftp server is unavailable while ESB is trying to FTP the file. Will ESB retain the file with itself and FTP the file once the ftp server is up?
    In BPEL I could see try catch blocks which can be used to handle the errors and thus send notifications.
    ESB documents introduced terms like error hospital related to error handling but I was not able to figure out a way of implementing them. As I am not well versed with XML and WSDL I am probably unable to use the fault tab which is in the routing service. I feel Oracle could have given some samples that explain about ESB error handling.
    Also to my dismay, adapter docs say that there is a limitation of 7MB size for ftping. Although our file sizes often fall below this size, I would want to know if there is any workaround to over come this size constraint.
    I think I put a lot of stuff in a single post and may be in the most haphazard way. Please bear with me.
    Please suggest me of some documents if any related to my questions.
    Would be really great if you can give me a straight forward solution to all the above problems
    Hope this forum would be a great help to me.
    Cheers,
    Robert.

    I have worked on a few SOA Apps implementations. Some successful and some not so. It really comes down to the type of integrations.
    But I would say the majority of your integration will be batch as this is what eBus is all about. If this is the case then I would recommend Oracle Data Integrator. If you go Oracle Data Integrator Suite it includes Service Bus and BPEL. ODI has an eBusiness Suite adapter as well.
    The good thing about ODI is that you can use it for data conversion, that conversion can then be reused once live, so the conversion is not throw away.
    In SOA 10.1.3.4 the limit of 7MB has been resolved but you must be using the file / FTP adapter for input and out, from the sounds of it you want to call concurrent programs so this probably wouldn't work.
    cheers
    James

  • Error handling limitations in XI3.0 SP11 when using IDOC's

    Backround: Sending IDOC's from XI to a 6.20 SAP system with ALEAUD turned on.
    We have found a couple of limitations with XI 3.0 SP11 regarding error handling and are wondering what other XI Developers are doing to work around them:
    1) Unable to generate Alerts from global Alert Rules (PMI) in a BPM
    2) Unable to handle IDOC negative acknowledgments in a BPM
    3) Unable to generate Alerts from Alert Rules (PMI) for negative IDOC acks when NOT using a BPM
    So far we are designing around these issues by using deadline monitoring steps in BPM's to handle IDOC posting errors and raising an Alert (the beauty of this workaround is that the BPM will automatically continue when the IDOC data is corrected and posted), and for non-BPM interfaces the errors must be handled in the receiving SAP system.
    We have sent these issues in to OSS but the replies have come back stating that it is 'by design'.
    Thx,
    Jason.

    Did you get any better solution now?
    Regards
    Mike

Maybe you are looking for

  • Connecting my iphone to mac laptop hung and shows black screen

    whenever i connect my iphone to my mac laptop. laptop hungs and shows black screen. I even tried connecting it to windows causing it to crash. Any problem with IOS 6. mine is iphone 4S running ios 6. please suggest any solution.

  • Table in Designer 8

    Is it possible to insert a table with say 4 columns and 4 rows into a form while have different column widths on each row. Example; Row1 Column1(Size 1") -Row1 Column2(Size 1") - Row1 Column3(Size 1") Row2 Column1(Size 1/2") -Row2 Column2(Size 1 1/2"

  • LRM-00112: multiple values not allowed for parameter 'control' - SQL Loader

    Hi, Please can someone help me identify why the below SQL* Loader test doesn't work and i get the error in the subject header? ctl file (load.ctl) load data infile 'C:\Documents and Settings\My Documents\loader\TEST.csv' into table XXCPP.SQL_LOADER_T

  • Creating separate libraries on separate computers

    I have master library on an external HDD. I have a macbook Pro and also a PC laptop. I would like to have music on each of these. Preferably, I would like only a portion of my full music, to save space. I would like to sync my Ipod to one or both of

  • Converting 8mm tape to DVD via FCP (AJA IoLA TBC??)

    I am playing old home video 8mm tapes out of a Handycam S-Video out (audio from the a/v jack), into an AJA IoLA. I am having a problem with dropped frames, they are happening all over the place. And although I have it set to not abort on dropped fram