begin process at 2012 05 27 06:38:08
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ASP.Net

 > EVITER QUE LES ERREURS DES USERCONTROLS, ARRETENT LE FONCTIONNEMENT DE LA PAGE

EVITER QUE LES ERREURS DES USERCONTROLS, ARRETENT LE FONCTIONNEMENT DE LA PAGE


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :ASP.Net Source .NET ( DotNet ) Classé sous :usercontrol, error, evenement, event, usercontrolerror Niveau :Expert Date de création :12/03/2006 Vu / téléchargé :9 971 / 243

Auteur : jesusonline

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note


 Description

Dans un de mes projets, je rajoute de nombreux UserControl dans ma page, mais si un Exception est lancé dans celui ci, je ne voulais pas que l'execution de la page s'arrete mais seulement l'execution du UserControl.


aprés beaucoup de recherche et test, je n'ai rien trouvé de rééellement convaincant :( la solution que je vous propose et de faire un overrides sur tous les lanceurs d'évenement "onLoad", "OnPreRender", etc... et de mettre un try catch dedans, ainsi toutes les erreurs liés au code de l'abonnement des événéments n'interferons pas la page.

Un exemple valant mieux qu'un long discours :

Nous avons un UserControl qui dans son load lance une Exception, normalement l'execution de la page s'arrete et affiche l'erreur. En héritant votre UserControl de monUserControl (la classe que j'ai écrites ci dessous) s'il y a une exception dans le load de la page, l'erreur sera capturé, et les autres événements ne seront pas déclenché mis à part l'evenement Error


Source

  • Imports Microsoft.VisualBasic
  • Imports System.Web
  • Public MustInherit Class MonUserControl
  • Inherits System.Web.UI.UserControl
  • #Region " Gestion des exceptions dans l'UC "
  • ' En faisant ces bidouilles, il y a trés peu de risques qu'un UC fasse planter toutes la page
  • ' en tout cas c'est la meilleure facon que j'ai trouvé. Le mieux aurait été de pouvoir arreter
  • ' tout fonctionnement de l'UC, mais ca m'a l'air impossible
  • Private lastError As Exception = Nothing
  • Private PlaceHolderError As PlaceHolder
  • Protected NotOverridable Overrides Sub OnLoad(ByVal e As System.EventArgs)
  • Try
  • If lastError Is Nothing Then
  • MyBase.OnLoad(e)
  • End If
  • Catch ex As Exception
  • lastError = ex
  • Me.OnError(e)
  • End Try
  • End Sub
  • Protected NotOverridable Overrides Sub OnInit(ByVal e As System.EventArgs)
  • Try
  • If lastError Is Nothing Then
  • MyBase.OnInit(e)
  • End If
  • Catch ex As Exception
  • lastError = ex
  • Me.OnError(e)
  • End Try
  • End Sub
  • Protected NotOverridable Overrides Sub OnPreRender(ByVal e As System.EventArgs)
  • Try
  • If lastError Is Nothing Then
  • MyBase.OnPreRender(e)
  • End If
  • Catch ex As Exception
  • lastError = ex
  • Me.OnError(e)
  • End Try
  • End Sub
  • Protected NotOverridable Overrides Sub OnError(ByVal e As System.EventArgs)
  • ' on log
  • ' CSP.Utilities.Logs.WriteLine(TraceLevel.Error, lastError)
  • MyBase.OnError(e)
  • End Sub
  • Protected NotOverridable Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
  • Try
  • If lastError Is Nothing Then
  • MyBase.Render(writer)
  • ElseIf PlaceHolderError IsNot Nothing Then
  • PlaceHolderError.RenderControl(writer)
  • End If
  • Catch ex As Exception
  • Me.OnError(EventArgs.Empty)
  • End Try
  • End Sub
  • ''' <summary>
  • ''' on recupere les éventuelles erreurs provoqués dans le UserControl
  • ''' </summary>
  • ''' <param name="sender"></param>
  • ''' <param name="e"></param>
  • ''' <remarks></remarks>
  • Private Sub Page_Error(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Error
  • If PlaceHolderError Is Nothing Then
  • PlaceHolderError = New PlaceHolder
  • End If
  • PlaceHolderError.Controls.Add(New LiteralControl("Une erreur a été détécté dans cet UserControl"))
  • End Sub
  • #End Region
  • End Class
Imports Microsoft.VisualBasic
Imports System.Web

Public MustInherit Class MonUserControl
    Inherits System.Web.UI.UserControl

#Region " Gestion des exceptions dans l'UC "

    ' En faisant ces bidouilles, il y a trés peu de risques qu'un UC fasse planter toutes la page
    ' en tout cas c'est la meilleure facon que j'ai trouvé. Le mieux aurait été de pouvoir arreter
    ' tout fonctionnement de l'UC, mais ca m'a l'air impossible

    Private lastError As Exception = Nothing
    Private PlaceHolderError As PlaceHolder

    Protected NotOverridable Overrides Sub OnLoad(ByVal e As System.EventArgs)
        Try
            If lastError Is Nothing Then
                MyBase.OnLoad(e)
            End If
        Catch ex As Exception
            lastError = ex
            Me.OnError(e)
        End Try
    End Sub

    Protected NotOverridable Overrides Sub OnInit(ByVal e As System.EventArgs)
        Try
            If lastError Is Nothing Then
                MyBase.OnInit(e)
            End If
        Catch ex As Exception
            lastError = ex
            Me.OnError(e)
        End Try
    End Sub

    Protected NotOverridable Overrides Sub OnPreRender(ByVal e As System.EventArgs)
        Try
            If lastError Is Nothing Then
                MyBase.OnPreRender(e)
            End If
        Catch ex As Exception
            lastError = ex
            Me.OnError(e)
        End Try
    End Sub

    Protected NotOverridable Overrides Sub OnError(ByVal e As System.EventArgs)
        ' on log
        ' CSP.Utilities.Logs.WriteLine(TraceLevel.Error, lastError)
        MyBase.OnError(e)
    End Sub

    Protected NotOverridable Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
        Try
            If lastError Is Nothing Then
                MyBase.Render(writer)
            ElseIf PlaceHolderError IsNot Nothing Then
                PlaceHolderError.RenderControl(writer)
            End If
        Catch ex As Exception
            Me.OnError(EventArgs.Empty)
        End Try
    End Sub

    ''' <summary>
    '''  on recupere les éventuelles erreurs provoqués dans le UserControl
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    Private Sub Page_Error(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Error
        If PlaceHolderError Is Nothing Then
            PlaceHolderError = New PlaceHolder
        End If
        PlaceHolderError.Controls.Add(New LiteralControl("Une erreur a été détécté dans cet UserControl"))
    End Sub

#End Region


End Class

 Conclusion

Dans le zip, un exemple de mis en scéne

Un post trés interessant sur l'événement Error : http://weblogs.asp.net/vga/archive/2003/06/16/8748 .aspx

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source .NET (Dotnet) UTILISATION DE LA MÉTHODE SORT ET SORTDIRECTION AVEC UN GRID...
Source .NET (Dotnet) RESPONSE.FILTER : MANIPULATION DU STREAM DE SORTIE ASP.NET
Source avec Zip Source .NET (Dotnet) OPTIMISATION DE LA SERIALISATION JSON POUR LES LIST<T>
Source avec Zip Source .NET (Dotnet) CRAWLABLELINKBUTTON : UPDATEPANEL ET RÉFÉRENCEMENT
Source .NET (Dotnet) POSTBACKCONTROL - COMMUNICATION CLIENT/SERVEUR AVEC LES UPDA...

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) GUESTBOOK AVEC GRIDVIEW par DanMor498
Source avec Zip CHECKED DROPDOWNLIST par fredzool
Source avec Zip Source avec une capture Source .NET (Dotnet) GRIDVIEW WITH TREEVIEW AND CALLBACK par fredzool
Source avec Zip APPELLER UN WEBSERVICE DEPUIS JAVASCRIPT par fredzool
Source avec Zip Source .NET (Dotnet) MONEY TEXTBOX WITH EMBEDED JAVASCRIPT par fredzool

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) GRIDVIEW DATE PICKER JAVASCRIPT par fredzool
Source avec Zip Source .NET (Dotnet) EMPÊCHER LES ERREURS DES USERSCONTROLS DE FAIRE PLANTER TOUT... par Nurgle
Source avec Zip Source .NET (Dotnet) DÉCLENCHEMENT D'ÉVÉNEMENT DANS UN CONTROL UTILISATEUR ET REM... par Thanos_the_yopper
Source .NET (Dotnet) HANDLER PERMETTANT DE FAIRE UNE REQUETE SUR LES USERCONTROL ... par jesusonline
Source avec une capture Source .NET (Dotnet) USER CONTROL POUR AFFICHER LA DESCRIPTION D'UN PRODUIT par jesusonline

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

recuperer evenement dans un usercontrol [ par 6miK ] Bonjour,j'aimerais savoir comment on peut récupérer un évenement dans un usercontrol.J'ai fait mon en-tête dans un user control et j'aurais aimer pouv capture d'evenement [ par sorcier_sly ] Salut&nbsp; tout le monde,Je vous ecris car j'ai un probleme pour intercepter un evenement.Donc j'ai une page aspx, qui contient un placeholder. Je ch evenement usercontrol [ par GILLOUXG ] Bonjour,Je vous expose mon problème:Depuis une page aspx je charge dynamiquement un UserControl qui contient un bouton.Lorsque je clic sur le bouton, Evenement et UserControl [ par darunia ] Je voudrais faire remonter un evenement d'un UserControl :public event EventHandler OnClick;    protected void bouton_Click(object sender, EventArgs e intercepter un evenement [ par sorcier_sly ] bonjour, Je suis en train de developper 2 UserControl et j'arrive pas a intercepter un evenenement. En fait, j'ai un premier UserControl contenant un UserControl et Event [ par Thanos_the_yopper ] Bonjour, Je fais un site en ASP.Net avec le framework 2.0 et VS2005. J'ai fait un UserControl qui contient des boutons et je voudrais que quand je cl UserControl dans un datagrid [ par Sobieski ] Hello,Je vous explique mon probl&#232;me :J'ai cr&#233;&#233; un usercontrol constitu&#233; de plusieurs panelJ'ai un datagrid avec 5 colonnes : une a Datagrid [ par Sobieski ] Salut !J'ai une question (&#233;tonnant hein ?)J'ai un Datagrid. Quand je cliques sur Edit ca&nbsp;affiche en dessous&nbsp;un usercontrol qui contient datagrid et evenement [ par sorcier_sly ] Saut,Je souhaiterais pouvoir intercepter un evenement associ&#233; a une datagrid. En fait, dans ma datagrid, sur chaque ligne, j'ai une imagebutton.J probleme de cast [ par sorcier_sly ] Salut tout le monde,J'ai un probleme de cast et j'arrive pas a le resoudre. J'ai une page aspx (appel&#233; demarrage) contenant 2 panels.Ces 2 panels


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,246 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales