2016-10-27 5 views
0

ストアドプロシージャブロックコードを取得します。プロシージャ内のRaiserror(SQL Server 2014)がクライアント側(C#)をキャッチしません

alter PROCEDURE [dbo].[TESTError]  
(

) 
AS 
BEGIN 

    SET NOCOUNT ON; 

     BEGIN TRY 
     SELECT 5/0 
     END TRY 
    BEGIN CATCH 

     DECLARE @ErrorNumber INT 

      SELECT @ErrorNumber = ERROR_NUMBER() 

      RAISERROR 
     (N'The error code is: %d', 
      16, -- Severity. 
       1, -- State. 
      @ErrorNumber,  
      ''); 
END CATCH 
END 

上記のストアドプロシージャは、SSMSを使用して実行するとエラーをスローして表示します。

.Netクライアントコードのみ例外部分。

アプリケーションがストアドプロシージャを呼び出したときに、例外ブロックをキャッチしません。

あらゆるヒントやアイデアが私を助けます。

+0

こんにちはMorshed ...あなたのニーズとデバッグのツール/習慣に依存します!この質問は解決されますか?さらに助けが必要ですか?私に1つのヒントを許してください:この質問が解決された場合は、(最良の)回答の投票カウンタの下で受け入れ検査をチェックすることは、非常に親切です。これは、1)この問題を解決済みとマークします。2)フォロワーが最良の解決策を見つけるのをより簡単にします。3)回答者にポイントを払います。 15ポイントのボーダーを越えたので、あなたは - さらに - 寄付に投票するよう求められます。これは、ありがとうと言います。ハッピーコーディング! – Shnugo

答えて

0
catch (SqlException ex) 
     {  
      string msg = string.Format("Error number: {0}/Message: {1}", ex.Number, ex.Message); 
     } 

このキャッチブロックが入力された場合でも、何が起こると思われますか?文字列変数は、次のマイクロ秒になった値を取得します。

とにかく:特殊な(型付けされた)キャッチブロックを扱うときはいつでも、一般的なキャッチブロックを追加しないようにしなければなりません)あなたの専門的なものの最後のように:

catch (System.Exception sysex) 
     {  
      string msg = string.Format("Error number: {0}/Message: {1}", sysex.Number, sysex.Message); 
      //Do something with this information! 
     } 

それとも

catch{throw;} 

これは

関連する問題