1

例外を処理する方法は、例外が発生したクライアント ページからマスター ページのコントロールの値を設定することです。

    private void deleteUser(int userid)
    {
        try
        {
            ImajUser u = new ImajUser(userid, true);
            u.Delete();

            lblerr.Text = "User was deleted successfully.";
            lblerr.ForeColor = System.Drawing.Color.Green;
        }
        catch (Exception ex)
        {
            this.Master.ErrorTitle.Text = "Delete User";
            this.Master.ErrorMessage.Text = String.Format("Error actioning request: [ {0} ]", ex.Message);
            this.Master.pnlErrorBG.Visible = true;
            this.Master.pnlErrorModal.Visible = true;

        }
    }

これをテストすると (最後にデータベースをシャットダウンして削除を試みたとき)、catch ブロックは問題なく実行されますが、初回例外が発生し、デバッガーが完全に停止します。

タイプ 'System.Data.EntityException' の最初のチャンス例外が System.Data.Entity.dll で発生しまし
た.

これは今まで見たことがありません。何が原因なのかわからないし、どうすれば直せるのかもわからない…

どんな助けでも大歓迎です!

編集

マスター ページのコントロールにアクセスするために設定しているプロパティは次のとおりです。

    public virtual Label ErrorTitle { get { return lblErrorAction; } }
    public virtual Label ErrorMessage { get { return lblErrorMessage; } }
    public virtual Panel pnlErrorBG { get { return ErrorBackground; } }
    public virtual Panel pnlErrorModal { get { return pnlErrorModal; } }

これらはコントロールを参照します。

    <asp:Panel runat="server" id="ErrorBackground" visible="false"> </asp:Panel>
    <asp:Panel runat="server" id="ErrorModal" visible="false">
        <asp:Label runat="server" ID="lblErrorAction" CssClass="lblerrortitle"></asp:Label>
        <asp:Label runat="server" ID="lblErrorMessage"></asp:Label>
        <asp:Button runat="server" ID="btnErrorAction" CssClass="button" Text="Retry" OnClick="btnErrorAction_Click" />
    </asp:Panel>

EDIT 2
したがって、コントロールを実際に例外が発生するページに移動しようとしましたが、マスターページでコントロールを使用するとエラーが発生し、100%機能しました。

4

1 に答える 1

1

これは の Visual Studio 設定ですDebug / Exceptions。プロパティは、最初の[x] Thrownチャンスの例外で停止するようにデバッガーに指示します。2 回目の例外でのみ停止するには、チェックボックスをオフにします。

スクリーンショット

ところで:最初のチャンスの例外はプロセスを終了しません。セカンド チャンスの例外のみが行います。Continueそのため、「再生」ボタン ( ) をもう一度押すか、F5キーを使用して続行できるはずです。

于 2014-05-09T15:30:28.183 に答える