2017-05-22 41 views
0

我有以下的C#代碼,應該幫助我處理DB異常DB例外不起作用:C#的try/catch如預期

try 
    { 
     db.Demandeur_Categorie.Remove(vModifSupp); 
     db.SaveChanges(); 
    } 
    catch (SqlException ex) 
    { 
     msg = "Une erreur SQL s'est produite! La suppression dans la table 
     'Catégorie Demandeur' a échouée. Raison: " + ex; 

     return Json(msg, JsonRequestBehavior.AllowGet); 
    } 

但它拋出一個錯誤

(以下簡稱「DELETE聲明衝突與行db.SaveChanges()基準約束 ......布拉布拉);

,而不是去catch塊

有人可以幫忙嗎?

+0

這是不是什麼@Igor說,或者如果你正在調試,VS可能是把它當作第一次機會異常(這意味着它會打破這一點,但最終會進入捕捉方法) – PoweredByOrange

+0

如果它不是你的問題。你可以使用沒有任何參數的catch。 – Universus

+0

將'SqlException'替換爲'Exception' –

回答

0

添加此代碼。

catch (Exception ex) 
{ 
    string typeString = ex.GetType().FullName; 
    throw; 
} 

,你會看到它可能不是一個SQLException

6

拋出的異常不是SqlException類型。如果您想知道確切的類型,請在運行時檢查類型。我也建議你閱讀例外如何工作和類型層次結構。

將其更改爲catch(DbUpdateException ex)

documentation,部分例外

+2

檢查拋出異常的文檔總是一個好主意:) – Donnie

+0

謝謝,只是對我的無知。 – Patrice

+0

@Patrice - 我很樂意提供幫助。請考慮使用答案左側的複選標記作爲答案。 – Igor