Как обработать исключение C #? - PullRequest
0 голосов
/ 30 сентября 2019

Я пытаюсь преобразовать строку в NULL, чтобы она могла быть обработана MySQL. Однако я получаю «Невозможно преобразовать строку в двойную». Я хочу выдать исключение, чтобы обработать любую введенную строку. Можно ли это сделать ??

try
{
    Double dDate = Convert.ToDouble(cellData);
    DateTime dt = DateTime.FromOADate(dDate);
    cellString = dt.ToString("yyyy-MM-dd");
    if (cellString.Length == 0)
        cellString = "NULL";
    else
        cellString = "'" + MySqlHelper.EscapeString(cellString) +         "'";

   // throw new EncoderFallbackException("Testing 123");
}
catch (InvalidCastException)
{
    cellString = "NULL";
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK,       MessageBoxIcon.Error);
    oWorkbook.Close();
    m_iSystemOk = false;
    return bResult;
}

ОБНОВЛЕНИЕ После комментария OP к ответу

Вот как определяется cellData:

var cellData = oWorksheet.Cells[row, col].Value2;
string cellString = "";

if (cellData != null)
{
    if (col == 6 || col == 9 || col == 10)
    {
        try (code continues as above statement)

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

У меня было неправильное исключение. Изменено для отлова (FormatException) и его работы

0 голосов
/ 30 сентября 2019

Эта строка, скорее всего, вызывает у вас проблему, поскольку все, что находится в cellData, не преобразуется в double:

Double dDate = Convert.ToDouble(cellData);

Вместо Convert.ToDouble,вместо этого попробуйте использовать double.TryParse:

if (double.TryParse(cellData, out double dDate))
{
    ... The rest of your code
}
else
{
    // cellData is NOT a double. Do something here to handle it
}

Причина, по которой это нужно изменить, заключается в том, что TryParse возвращает логическое значение, указывающее, был ли он успешным или нет , вместо того, чтобы выдавать исключение .

Это дает вам изящный способ справиться с ошибкой преобразования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...