1. ホーム
  2. c#

[解決済み] ある例外が特定の型であるかどうかを判断する方法

2023-02-25 09:32:57

質問

try catchのコードを持っています。

try 
{
    ...
}
catch(Exception ex) 
{
    ModelState.AddModelError(
        "duplicateInvoiceNumberOrganisation", "The combination of organisation and invoice number must be unique");
}

このコードの一部では、データベースにレコードを挿入しようとしています。dbaは、データベースが重複をチェックし、重複がある場合はエラーを返すように設定しています。現在、ご覧のように、どのようなエラーが発生しても、同じエラーをモデルに追加しています。このエラーが、dbaによって設定された重複エラーによって引き起こされた場合のみ、モデルに追加されるように変更したいのです。

以下は、私がキャッチしたいエラーです。内部例外の中にあることに注意してください。誰かこれを具体的にキャッチする方法を教えてください。

どのように解決するのですか?

以前 を追加してください。

catch(DbUpdateException ex)
{
  if(ex.InnerException is UpdateException)
  {
    // do what you want with ex.InnerException...
  }
}

C#6からは、以下のようになります。

catch(DbUpdateException ex) when (ex.InnerException is UpdateException)
{
    // do what you want with ex.InnerException...
}