Как обрабатывать ошибки от вызовов хранимых процедур - PullRequest
0 голосов
/ 28 декабря 2018

Я использую пошаговую процедуру для добавления нового порядка в базу данных, но не могу найти способ обработки исключений / ошибок при вызове процедуры в ASP.NET.Вот код из контроллера

public ActionResult Create(FormCollection collection)
{
    try
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["con"].ConnectionString);
        SqlCommand com = new SqlCommand("OrderAdd", con);
        com.CommandType = CommandType.StoredProcedure;
        com.Parameters.AddWithValue("@Cusid", collection["CustomerID"]);
        //More Parameters
        con.Open();
        com.ExecuteNonQuery();
        con.Close();
        return RedirectToAction("Index");
    }
    catch
    {
        return View();
    }
}

и код try catch из процедуры

    BEGIN CATCH
      SELECT ERROR_MESSAGE(),ERROR_NUMBER(),ERROR_SEVERITY()
      ROLLBACK TRAN @AddTran
    END CATCH

Процедура работает так же, как и обработка ошибок.Так что проблема в том, как отловить исключение / ошибку в контроллере.

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Понял, мне пришлось изменить обработку ошибок хранимых процедур

BEGIN CATCH
    DECLARE @ErrorMessage NVARCHAR(4000);  
    DECLARE @ErrorSeverity INT;  
    DECLARE @ErrorState INT;  

    SELECT   
        @ErrorMessage = ERROR_MESSAGE(),  
        @ErrorSeverity = ERROR_SEVERITY(),  
        @ErrorState = ERROR_STATE();  

    -- Use RAISERROR inside the CATCH block to return error  
    -- information about the original error that caused  
    -- execution to jump to the CATCH block.  
    RAISERROR (@ErrorMessage, -- Message text.  
               @ErrorSeverity, -- Severity.  
               @ErrorState -- State.  
               );   
    ROLLBACK TRAN @Tran
END CATCH

И добавить этот код в контроллер

catch (SqlException ex)
{
     System.Diagnostics.Debug.WriteLine(ex.Message);
     return RedirectToAction("Index");
}
0 голосов
/ 28 декабря 2018

напиши попробуй поймай вот так.

try
{
//block of code
}
catch (SqlException SqlEx)
{
//sql error handling
}
catch (Exception Exp)
{
//application error handling
}
finally
{
//optional
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...