Существует ли способ добавить глобальный обработчик ошибок в приложении Visual Basic 6.0?

Я отправил этот ответ, поскольку этот вопрос был просмотрен больше всего, и этот код на стороне сервера был написан на VS 2015 в C # для отправки push-уведомления либо одного устройства на основе идентификатора устройства, либо темы подписки на приложение Xamarin Android

public class FCMPushNotification
{
    public FCMPushNotification()
    {
        // TODO: Add constructor logic here
    }

    public bool Successful
    {
        get;
        set;
    }

    public string Response
    {
        get;
        set;
    }
    public Exception Error
    {
        get;
        set;
    }



    public FCMPushNotification SendNotification(string _title, string _message, string _topic)
    {
        FCMPushNotification result = new FCMPushNotification();
        try
        {
            result.Successful = true;
            result.Error = null;
           // var value = message;
            var requestUri = "https://fcm.googleapis.com/fcm/send";

            WebRequest webRequest = WebRequest.Create(requestUri);
            webRequest.Method = "POST";
            webRequest.Headers.Add(string.Format("Authorization: key={0}", YOUR_FCM_SERVER_API_KEY));
            webRequest.Headers.Add(string.Format("Sender: id={0}", YOUR_FCM_SENDER_ID));
            webRequest.ContentType = "application/json";

            var data = new
            {
               // to = YOUR_FCM_DEVICE_ID, // Uncoment this if you want to test for single device
               to="/topics/"+_topic, // this is for topic 
                notification=new
                {
                    title=_title,
                    body=_message,
                    //icon="myicon"
                }
            };
            var serializer = new JavaScriptSerializer();
            var json = serializer.Serialize(data);

            Byte[] byteArray = Encoding.UTF8.GetBytes(json);

            webRequest.ContentLength = byteArray.Length;
            using (Stream dataStream = webRequest.GetRequestStream())
            {
                dataStream.Write(byteArray, 0, byteArray.Length);

                using (WebResponse webResponse = webRequest.GetResponse())
                {
                    using (Stream dataStreamResponse = webResponse.GetResponseStream())
                    {
                        using (StreamReader tReader = new StreamReader(dataStreamResponse))
                        {
                            String sResponseFromServer = tReader.ReadToEnd();
                            result.Response = sResponseFromServer;
                        }
                    }
                }
            }

        }
        catch(Exception ex)
        {
            result.Successful = false;
            result.Response = null;
            result.Error = ex;
        }
        return result;
    }
}

и его использование

// start sending push notification to apps
                FCMPushNotification fcmPush = new FCMPushNotification();                    
                fcmPush.SendNotification("your notificatin title", "Your body message","news");
                // end push notification
5
задан Andrei 3 May 2012 в 15:21
поделиться

5 ответов

Нет нет никакого способа добавить глобальный обработчик ошибок в VB6. Однако Вы не должны добавлять обработчик ошибок в каждом методе. Только действительно необходимо добавить обработчик ошибок в каждом обработчике событий. Например, Каждое событие щелчка, загрузите событие и т.д.

6
ответ дан 14 December 2019 в 13:52
поделиться

Также: ошибки действительно распространяют вверх: если метод X методов вызовов Y и Z, единственный обработчик ошибок в методе X будет касаться всех трех методов.

1
ответ дан 14 December 2019 в 13:52
поделиться

В то время как ошибки делают propogate вверх, VB6 не имеет никакого способа сделать отслеживание стека, таким образом, Вы никогда не знаете, какой метод повысил ошибку. К сожалению, при необходимости в этой информации необходимо добавить обработчик к каждому методу только для входа, где Вы были.

2
ответ дан 14 December 2019 в 13:52
поделиться

на ошибочном резюме затем - вид завершения, но его некоторое время. Вы могли бы хотеть искать любые протесты

-3
ответ дан 14 December 2019 в 13:52
поделиться

Вчера я обнаружил этот инструмент:

http://www.everythingaccess.com/simplyvba-global-error-handler.htm

Это коммерческий продукт, который обеспечивает глобальную обработку ошибок в приложениях VB6 и VBA.

Он имеет свою стоимость, но отлично справляется со своей задачей. Я видел другие инструменты (бесплатные), помогающие в этом VB6 mangle, но ни один не может покрыть настоящую глобальную обработку ошибок так, как это делает "SimplyVB6 Global Error Handler for VB6".

С "SimplyVB6 Global Error Handler for VB6" не нужно менять ни одной строки существующего кода, и не нужно нумеровать строки кода (через плагин или что-то еще). Просто включите глобальную обработку ошибок (одна строка кода в главном модуле) и все готово.

"SimplyVB6 Global Error Handler for VB6":

  • может показывать стек вызовов с реальными именами модулей и функций, а также отображать строки исходного кода.
  • работает только с программами VB6, скомпилированными в P-Code.
  • может работать через раннее или позднее связывание (без DLL Hell).

Я никоим образом не связан с www.everythingaccess.com, просто рад, что нашел его вчера днем, я как бы снова рассматривал эту проблему, поскольку один из моих клиентов имел ошибки в нашем VB6 приложении. Я смог протестировать инструмент вчера днем, обменявшись письмами со службой поддержки www.everythingaccess.com и получив по почте ознакомительный продукт. Их веб-страница пока не позволяет загрузить ознакомительную версию продукта VB6, вам придется написать им по электронной почте, но они отвечают менее чем через час.

0
ответ дан 14 December 2019 в 13:52
поделиться