program wykorzystujący mySql connector działa tylko na moim komputerze na innym już nie

0

jak w temacie. Łączę się z bazą danych na cda.pl. Na moim komputerze wszystko działa idealnie, jednak przy kliknięciu na przycisk zaloguj, na innym komputerze wyskakuje okienko "program przestał działać". Co może być tym spowodowane?

2

Są dwa wyjścia żeby dowiedzieć się o co chodzi:

  • To co Ci wyskakuje to komunikat o nieobsłużonym wyjątku. Zapnij kawałek kodu, który się łączy w try catch, skompiluj na nowo, odpal na innym komputerze i popatrz co nie działa.
  • W Narzędziach administracyjnych systemu Windows w Panelu sterowania jest sekcja dotycząca Aplikacji. Tam są logowane szczegóły również dotyczące niepołapanych wyjątków. Można sprawdzić bez rekompilacji programu.
0

Właśnie całą procedurę łączenia z bazą mam w try catch finally, Dodatkowo w oknie zamknięcia aplikacji pokazuje kod CLR20r3. Czytam właśnie o nim

0

Właśnie całą procedurę łączenia z bazą mam w try catch finally

To jeszcze nie oznacza, że wyjątek zostanie na 100% połapany :)
Skoro pojawia się systemowa informacja (taka standardowa, jak wtedy gdy wywala się jakaś aplikacja), że apka przestała działać to znaczy, że ten wyjątek nie został złapany.

0

zaznaczylem przy mysql.data [copy to local], wrzucilo mi dllke do folderu i działa juz na innych komputerach. jakis ja głupi...

1

Taki offtopowy przykładzik tego o czym pisałem w komentarzu to Twojego postu:

  • Wyjątek niewyłapany mimo, że wystąpił (a to ciekawe :) ), a przecież blok try catch jest zdefiniowany:
using System;
using System.Text;
using System.Linq;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.IO;
using System.Windows.Forms;

class Program
{
    public static void Main(string[] args)
    {
        var form = new Form();
        form.Load += (sender, e) =>
        {
            try
            {
                var task = Task.Factory.StartNew(() =>
                {
                    var array = new int[1];
                    array[2] = 0;
                });

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        };
        form.ShowDialog();
    }
}
  • Wyjątek połapany z poprzedniego wątku, bez jawnego try catch:
using System;
using System.Text;
using System.Linq;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.IO;
using System.Windows.Forms;

class Program
{
    public static void Main(string[] args)
    {
        var form = new Form();
        form.Load += (sender, e) =>
        {
            var task = Task.Factory.StartNew(() =>
            {
                var array = new int[1];
                array[2] = 0;
            }).ContinueWith((prev) =>
            {
                if (prev.Exception != null) MessageBox.Show(prev.Exception.ToString());
            });
        };
        form.ShowDialog();
    }
}

Jak widzisz try catch nie zawsze " działa" :D Uruchom, a się przekonasz.

PS: var task jest niepotrzebny ale na komórce już nie będę łamał palców, żeby to skasować więc wybaczcie ;-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1