MySQL исключения не перехвачены (C #)

Моя программа на C # работает с базой данных MySQL.

По какой-то причине программа не может отловить исключения, вызвавшие мое соединение MySQL.

Пример:

Если я сделаю учетные данные в строке подключения недействительными, программа будет аварийно завершаться следующим образом (даже при работе в отладчике):http://imgur.com/SfzkVdW

Код подключения выглядит так:

using MySQLDriverCS;

namespace XXX
{
    public class Data
    {
        private static MySQLConnection con;

        static Data()
        {
            string connectionString = new MySQLConnectionString("XXX",
                "XXX",
                "XXX",
                "XXX").AsString;

            con = new MySQLConnection(connectionString + ";CharSet=utf8");
            con.Open(); // For testing the connection
            con.Close();
        }
...

Любые идеи о том, как я могу улучшить вещи и начать ловить исключения MySQL?

Я попытался обернуть код в статический конструктор в try-catch. Это не помогло. Программа все равно зависала таким же образом.

Благодарю.

Тот же код с оберткой try-catch. Это все еще терпит неудачу с той же самой ошибкой:http://imgur.com/SfzkVdW

    static Data()
    {
        try
        {
            string connectionString = new MySQLConnectionString("XXX",
                "XXX",
                "XXX",
                "XXX").AsString;

            con = new MySQLConnection(connectionString + ";CharSet=utf8");
            con.Open(); // For testing the connection
            con.Close();
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
 Louisa09 июл. 2016 г., 04:23
Я попытался обернуть код в статический конструктор в try-catch. Это не помогло. Программа все равно зависала таким же образом.
 user652277309 июл. 2016 г., 04:17
«исключение не перехвачено», потому что нет блока try-catch. Попробуйте добавить блок try-catch, и вы увидите ошибку.
 Aiden Grossman09 июл. 2016 г., 04:07
Попробуйте просто передать строку подключения в объект mysqlconnection вместо использования объекта mysqlconnectionstring
 derloopkat09 июл. 2016 г., 04:42
Вы получаете эту ошибку, потому что он работает на хосте, а отладчик не настроен для неуправляемого кода. Перейдите в свойства вашего проекта и проверьте вкладки Debug и Build. Вы должны быть в состоянии включить отладку неуправляемого кода там.

Ответы на вопрос(2)

try-catch заявление.

Синтаксис по сути следующий:

try
{
    // operation likely to cause error
} 
catch (Exception e){
    // handle error
    Console.WriteLine("Exception: " + e);
}

Console.Read();

Так что завернитеcon.Open() логика вtry-catch утверждение так:

try
{
    Con.Open();
} 
catch (Exception e){
    // handle error
    Console.WriteLine("Possible MySQL Exception: " + e);
}

Кроме того, вы можете добавитьfinally блок до концаtry-catch оператор, который выполняет свой код независимо от того, было ли обработано исключение:

    try
{
    // attempt to do something here
    con.Open();
} 
catch (Exception e){
    // handle error
    Console.Writeline("Exception: " + e);
}
finally 
{
    Console.Writeline("This runs no matter if an exception is thrown or not!");
}

Console.Read();
 Louisa09 июл. 2016 г., 04:24
Я попытался обернуть код в статический конструктор в try-catch. Это не помогло. Программа все равно зависала таким же образом.
Решение Вопроса

Используйте соответствующиеКлассы MySQL.

using MySql.Data.MySqlClient;

// class level var or whatnot:
string connString = @"server=theHostName;userid=dbuser123;password=OpenSesame7;database=my_db_name";


public void connect()
{
    try
    {
        conn = new MySqlConnection(connString); // read above comments for (conn)
        conn.Open();
    }
    catch (MySqlException ex)
    {
        MessageBoxButtons buttons = MessageBoxButtons.OK;
        string s="MySqlException: "+ex.ToString();
        MessageBox.Show(s,"Error",buttons);
    }
    finally
    {
        if (conn != null)
        {
            //conn.Close();
        }
    }
}

Ошибка не обнаружена:

Добавить скриншот ссылки:

 Drew09 июл. 2016 г., 04:40
да. все хорошо, что хорошо кончается.
 Drew09 июл. 2016 г., 04:36
Иногда люди забывают, что они компилируют для отладки, но запускают старый код выпуска. idk, что вы делаете или ваши ссылки или классы. Удачи: p
 Drew09 июл. 2016 г., 04:34
Нет проблем, поймав мою ошибку. Экран ловушки ошибок, показанный выше белым цветом
 Louisa09 июл. 2016 г., 04:39
Использование MySql.Data.MySqlClient вместо MySQLDriverCS очень помогло. Теперь я получаю исключение. Большое спасибо! - думаю, пришло время сделать рефакторинг кода.
 Louisa09 июл. 2016 г., 04:23
Я попытался обернуть код в статический конструктор в try-catch. Это не помогло. Программа все равно зависала таким же образом.
 Drew09 июл. 2016 г., 04:26
Моя настройка здесь:stackoverflow.com/a/38089869
 Drew09 июл. 2016 г., 04:24
Я постараюсь испортить мою строку подключения

Ваш ответ на вопрос