IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

Comprendre le try et except


Sujet :

Visual C++

  1. #1
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    924
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Mai 2011
    Messages : 924
    Par défaut Comprendre le try et except
    Bonjour,

    J'essaye de savoir comment fonctionne le mécanisme d'exception.

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    void myruntime()
    {
    00401000  push        ebp  
    00401001  mov         ebp,esp 
    00401003  push        0FFFFFFFEh 
    00401005  push        offset ___rtc_tzz+68h (402208h) 
    0040100A  push        offset _except_handler4 (401695h) 
    0040100F  mov         eax,dword ptr fs:[00000000h] 
    00401015  push        eax  
    00401016  sub         esp,8 
    00401019  push        ebx  
    0040101A  push        esi  
    0040101B  push        edi  
    0040101C  mov         eax,dword ptr [___security_cookie (403000h)] 
    00401021  xor         dword ptr [ebp-8],eax 
    00401024  xor         eax,ebp 
    00401026  push        eax  
    00401027  lea         eax,[ebp-10h] 
    0040102A  mov         dword ptr fs:[00000000h],eax 
    00401030  mov         dword ptr [ebp-18h],esp 
    	__try
    00401033  mov         dword ptr [ebp-4],0 
    	{
    		*p=5; //provoque exception car p = NULL
    0040103A  mov         eax,dword ptr [p (403370h)] 
    0040103F  mov         byte ptr [eax],5 
    	}
    00401042  jmp         $LN6+11h (40105Bh) 
    	__except(1)
    00401044  mov         eax,1 
    $LN9:
    00401049  ret              
    $LN6:
    0040104A  mov         esp,dword ptr [ebp-18h] 
    	{
    		printf("Exception\n");
    0040104D  push        offset string "Exception\n" (4020E4h) 
    00401052  call        dword ptr [__imp__printf (40209Ch)] 
    00401058  add         esp,4 
    	}
    0040105B  mov         dword ptr [ebp-4],0FFFFFFFEh 
     
    }
    00401062  mov         ecx,dword ptr [ebp-10h] 
    00401065  mov         dword ptr fs:[0],ecx 
    0040106C  pop         ecx  
    0040106D  pop         edi  
    0040106E  pop         esi  
    0040106F  pop         ebx  
    00401070  mov         esp,ebp 
    00401072  pop         ebp  
    00401073  ret
    Comment fait le prog pour retrouver l'adresse 0x40104a quand il y a exception ?


    Source original :
    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
    #include "stdafx.h"
    #include <stdio.h>
     
    char *p=NULL;
     
    void myruntime()
    {
    	__try
    	{
    		*p=5; //provoque exception car p = NULL
    	}
    	__except(1)
    	{
    		printf("Exception\n");
    	}
     
    }
     
     
    int _tmain(int argc, _TCHAR* argv[])
    {
    	_asm int 3 //call debugger host
    	myruntime();
    	return 0;
    }
    Merci ;

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 472

Discussions similaires

  1. [Free Pascal] Fonction try et except
    Par koliter dans le forum Free Pascal
    Réponses: 1
    Dernier message: 19/12/2011, 09h14
  2. Try Catch Exception
    Par Foyus dans le forum C#
    Réponses: 3
    Dernier message: 08/10/2010, 11h55
  3. try catch exception
    Par gaut02 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 21/03/2009, 15h42
  4. Code erreur d'un Try, Catch (exception e)
    Par davelop dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 06/10/2008, 19h00
  5. probleme try catch, Exception
    Par Slumpy dans le forum VB.NET
    Réponses: 9
    Dernier message: 23/03/2007, 15h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo