Bonjour à tou(te)s
J'ai un problème de propagation d'erreurs.
J'ai un formulaire d'importation de données: Form_Import
qui importe les données grâce à une méthode de ma classe business: CTraitementImport
La méthode de form_import appelle CTraitementImport.Import() comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 Private Sub buttonImport_Click() Dim traitementImport As New CTraitementImport Dim defaultCursor As Integer defaultCursor = Screen.MousePointer Dim logger As New CLogger logger.SetLogger m_logger On Error GoTo Err_m_buttonImport_Click Dim msgBoxStyle As Integer msgBoxStyle = vbInformation Or vbYesNo Or vbDefaultButton2 If (Validate()) Then If (vbYes = MsgBox("Etes vous sûr de vouloir importer les données issues de: " & vbCrLf & m_textBoxPath.value & vbCrLf & "le " & m_textBoxDate, msgBoxStyle, "Confirmation d'importation")) Then Screen.MousePointer = 11 m_buttonImport.Enabled = False traitementImport.Instanciate m_textBoxPath.value, m_textBoxName.value, m_textBoxDate.value, m_checkBoxReleased.value traitementImport.Import logger Screen.MousePointer = defaultCursor MsgBox "L'import s'est terminé avec succes", vbOKOnly Or vbInformation, "Import Terminé" End If End If Default: m_buttonImport.Enabled = True Exit Sub Err_m_buttonImport_Click: Screen.MousePointer = defaultCursor MsgBox "Une erreur est survenue lors de l'importation: " & vbCrLf & Err.Number & ": " & Err.Description, vbCritical, "Importation des données" Resume Default End Sub
CTraitementImport.Import pourrait ressembler à ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Public Sub Import(logger As CLogger) On Error GoTo Error logger.Clear Dim wrkDefault As Workspace Set wrkDefault = DBEngine.Workspaces(0) wrkDefault.BeginTrans 'plus toute une série d'instructions plus merveilleuses les unes que les autres logger.Append "L'import s'est terminé avec succes" Default: wrkDefault.Close Exit Sub Error: wrkDefault.Rollback Err.Raise Err.Number, Err.Source, Err.Description, Err.HelpFile, Err.HelpContext Resume Default End Sub
Comme vous pouvez le constater, je souhaite propager les erreurs générées dans ma méthode Import au module de classe appelant (Form_import) a l'instar d'un throw en C#
Mais il s'avère que ça ne fonctionne pas. Access récupère l'erreur lui même et affiche sa messageBox permettant de débugger ou mettre fin à l'exécution (la même que si on fait un On Error GoTo 0 ou rien, finalement).
Qu'ai je fait de mal ou pas fait de bien?
Partager