OVH Cloud OVH Cloud

finaliseur

4 réponses
Avatar
dark poulpo
bonjour, j'ai du mal a saisir l'utilité du finalizeur, pourriez vous me
donner un exemple concret svp
merci d'avance

--
*************************
le bureau 3D pour windows
http://www.syndesk3d.fr.st
*************************

4 réponses

Avatar
Unknown
Le Wed, 14 Jul 2004 15:29:21 +0200, dark poulpo a écrit :

bonjour, j'ai du mal a saisir l'utilité du finalizeur, pourriez vous me
donner un exemple concret svp
merci d'avance


j'ouvre une connexion
try {
ca marche
} catch ()
ca plant
} finalize {
je ferme tout
}

Avatar
Maurice PHILIPPE
Si tu parles du finalizeur à l'opposé du constructeur, j'avoue que je ne
l'utilise pas.
Une utilisation classique est la libération de ressources dont on n'a plus
l'utilité, par exemple (pas joli, mais juste à titre didactique) :

Un objet DataFile gère l'accès à un fichier, ses méthodes sont
-open(String filename)
-close()
-read()
-write(String data)

Son construteur
DataFile(String filename)

On suppose que le premier constructeur effectue l'open()
On imagine bien qu'il n'y a pas de raison que l'utilisateur de cette classe
fasse un close() alors qu'il n'a pas fait l'open(). C'est donc au finalizeur
de libérer le fichier.

Cela marche mais je n'aime pas ça car on ne maitrise pas le moment du
close():
1) il faut que l'instance ne soit plus référencée
2) il faut que le garbage collector "libère" l'objet
Donc je préfére gérer la ressource à la mano, ce qui permet aussi de ne pas
avoir à gérer d'exception/flag à la construction pour gérer les cas d'erreur
(dans notre exemple les pb d'accès au fichier lors de l'open())

"dark poulpo" wrote in message
news:cd3bg8$vbp$
bonjour, j'ai du mal a saisir l'utilité du finalizeur, pourriez vous me
donner un exemple concret svp
merci d'avance

--
*************************
le bureau 3D pour windows
http://www.syndesk3d.fr.st
*************************




Avatar
Cédric Chabanois
ouai enfin plutôt
try {

} catch (Exception e) {
// bouh ya euh un problème
} finally {
// exception ou pas il faut que je ferme le fichier ou je ne sais pas quoi
}


Unknown wrote:


bonjour, j'ai du mal a saisir l'utilité du finalizeur, pourriez vous me
donner un exemple concret svp
merci d'avance



j'ouvre une connexion
try {
ca marche
} catch ()
ca plant
} finalize {
je ferme tout
}



Avatar
Cédric Chabanois
Le finalyze il ne faut pas l'utiliser !

Rien ne dit qu'il sera appelé en pratique : ce n'est pas l'équivalent du
destructeur c++.

A oublier donc

Cédric

Si tu parles du finalizeur à l'opposé du constructeur, j'avoue que je ne
l'utilise pas.
Une utilisation classique est la libération de ressources dont on n'a plus
l'utilité, par exemple (pas joli, mais juste à titre didactique) :

Un objet DataFile gère l'accès à un fichier, ses méthodes sont
-open(String filename)
-close()
-read()
-write(String data)

Son construteur
DataFile(String filename)

On suppose que le premier constructeur effectue l'open()
On imagine bien qu'il n'y a pas de raison que l'utilisateur de cette classe
fasse un close() alors qu'il n'a pas fait l'open(). C'est donc au finalizeur
de libérer le fichier.

Cela marche mais je n'aime pas ça car on ne maitrise pas le moment du
close():
1) il faut que l'instance ne soit plus référencée
2) il faut que le garbage collector "libère" l'objet
Donc je préfére gérer la ressource à la mano, ce qui permet aussi de ne pas
avoir à gérer d'exception/flag à la construction pour gérer les cas d'erreur
(dans notre exemple les pb d'accès au fichier lors de l'open())

"dark poulpo" wrote in message
news:cd3bg8$vbp$

bonjour, j'ai du mal a saisir l'utilité du finalizeur, pourriez vous me
donner un exemple concret svp
merci d'avance

--
*************************
le bureau 3D pour windows
http://www.syndesk3d.fr.st
*************************