2016-08-23 4 views
0

Я использую PetaPoco и имею следующий код, чтобы получить список имен из базы данных.PetaPoco не генерирует исключение

public IEnumerable<string> GetManufacturers() 
{ 
    try 
    { 
     statement = "EXEC P_GET_ALL_MANUFACTURER_NAMES"; 
     var data = db.Query<string>(statement); 
     return data; 
    } 
    catch (SqlException sqlex) 
    { 
     LogManager.WriteException(sqlex); 
     throw; 
    } 
    catch (InvalidOperationException ioex) 
    { 
     LogManager.WriteException(ioex); 
     throw; 
    } 
} 

Когда хранимая процедура не существует в базе данных, я заметил, что исключение не пойман в блоке улова и записываются в data переменную, которая записывается на слой API выше где он становится отображаемым как объект JSON.

{ 
    "Message" : "An error has occurred.", 
    "ExceptionMessage" : "The 'ObjectContent`1' type failed to serialize the response body for content type 'application/json; charset=utf-8'.", 
    "ExceptionType" : "System.InvalidOperationException", 
    "StackTrace" : null, 
    "InnerException" : { 
     "Message" : "An error has occurred.", 
     "ExceptionMessage" : "Could not find stored procedure 'P_GET_ALL_MANUFACTURER_NAMES'.", 
     "ExceptionType" : "System.Data.SqlClient.SqlException", 
     "StackTrace" : "..." 
    } 
} 

Что я здесь делаю неправильно? Как я могу заставить PetaPoco выбросить исключение?

+1

Может быть, так как вы говорите PetaPoco о ожидании строки, и она получает тот, который не видит ничего плохого? Вы пробовали создать класс для хранения возвращаемых данных? – saarrrr

+0

Дерьмо! хорошо, что было глупо. – Animesh

+0

Вы решили? –

ответ

0

Вы не перебрасываете его?

throw; 
+0

Я перетаскиваю его в слой API. – Animesh