Après windows pour les nuls, voici PB pour les bons (ou presque).

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 18-01-2008 14:49:25

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

champs Throws

A quoi sert ce champs dans une fonction d'un uo par exemple ?
Il sert à gérer les exceptions? Si oui comment?

Merci

Hors ligne

 

#2 18-01-2008 15:04:55

Dadone  
Membre Power Geek
Lieu: Avon (Seine et Marne)
Date d'inscription: 19-02-2007
Messages: 252
Pépites: 985
Banque: 0
Site web

Re: champs Throws

D'après ce que j'ai compris c'est plutôt résevé pour le serveur d'application Easerver. Donc cette clause est inutile, si on n'utilise pas EaServer. En tous cas moi je ne l'ai jamais utilisé bien que j'ai un systéme de gestion des erreurs asez sophistiqué.

Dernière modification par Dadone (18-01-2008 15:06:11)

Hors ligne

 

#3 18-01-2008 15:19:26

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: champs Throws

Justement à propos de la gestion des erreurs,peut on créer une exception et déclencher une erreur lorsqu'on le souhaite ?
je ne sais pas si je suis très clair...

Hors ligne

 

#4 18-01-2008 16:21:17

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: champs Throws

thezerg a écrit:

Justement à propos de la gestion des erreurs,peut on créer une exception et déclencher une erreur lorsqu'on le souhaite ?
je ne sais pas si je suis très clair...

Oui c'est comme en Java.
La seule contrainte est que tu dois compiler en pbd (ie : pas de dll)

Donc, quand le champs throws est présent, la fonction est susceptible de déclencher une exception.

Pour créer une exception :
New->Standard class->Exception


never let people work on more than one thing at once.

Hors ligne

 

#5 18-01-2008 16:30:59

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: champs Throws

shahin a écrit:

thezerg a écrit:

Justement à propos de la gestion des erreurs,peut on créer une exception et déclencher une erreur lorsqu'on le souhaite ?
je ne sais pas si je suis très clair...

Oui c'est comme en Java.
La seule contrainte est que tu dois compiler en pbd (ie : pas de dll)

Donc, quand le champs throws est présent, la fonction est susceptible de déclencher une exception.

Pour créer une exception :
New->Standard class->Exception

Merci mais compiler en pdb ca m'arrange pas

Hors ligne

 

#6 18-01-2008 16:35:38

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: champs Throws

précision :

Code: pb

public function integer of_divide (double a, double b) throws nvo_exception;
nvo_exception ex

if b=0 Then
  ex = create nvo_exception
  ex.setMessage("Erreur de division par zero")
  throw ex
END IF

return a / b
end function


thezerg a écrit:

Merci mais compiler en pdb ca m'arrange pas

Est tu bien sûr que l'application soit plus rapide compilée en dll ?
Moi pas


never let people work on more than one thing at once.

Hors ligne

 

#7 18-01-2008 16:37:14

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: champs Throws

shahin a écrit:

précision :

Code: pb

public function integer of_divide (double a, double b) throws nvo_exception;
nvo_exception ex

if b=0 Then
  ex = create nvo_exception
  ex.setMessage("Erreur de division par zero")
  throw ex
END IF

return a / b
end function

merci Mr

Hors ligne

 

#8 18-01-2008 16:40:11

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: champs Throws

shahin a écrit:

Est tu bien sûr que l'application soit plus rapide compilée en dll ?
Moi pas

Non je suis pas sur.. mais bon c'est comme ca chez le client.. 

[EDIT]

Je dis n'importe quoi c'est en PBD ..

Hors ligne

 

#9 18-01-2008 23:24:14

thezerg  
Modérateur
Award: calimero
Lieu: Bordeaux
Date d'inscription: 12-09-2006
Messages: 966
Pépites: 22,449
Banque: 154,120,629,477,379,100

Re: champs Throws

Merci beaucoup Shahin 50

Hors ligne

 

#10 27-03-2008 15:18:14

Cortex  
Modérateur
Lieu: Arlon
Date d'inscription: 08-02-2008
Messages: 194
Pépites: 6,904
Banque: 2,109,818,425,070

Re: champs Throws

thezerg a écrit:

A quoi sert ce champs dans une fonction d'un uo par exemple ?
Il sert à gérer les exceptions? Si oui comment?

Merci

Je voudrais profiter de la question originale pour clarifier un truc qui, je l'ai deja beaucoup constaté, echappe un peu a pas mal de developpeur PB n'utilisant pas les exceptions tout les jours...
Le fameux "champs throws" est la uniquement pour dire que ce script est susceptible de lancer une Exception non catchée dans ce script. Par un "throw xxx" avec xxx une instance d'exception.
Si on ne rempli pas bien ce champs, on a une erreur lors de la validation du code par PB, a qui ca ne plait pas.

Ca, c'est comme dans pas mal de langages gerant les exceptions.

Toutefois, il existe aussi une 2eme voie, celle des runtimeerror, pas assez souvent utilisee a mon sens. Elle a qques avantages:
- un throw runtimeerror ne necessite pas de remplir le champs throws du script ou on l'ecrit.
- une runtimeerror lancee se popule automatiquement avec le nom du script, la ligne,... ou l'erreur s'est produite.
- dans un script appelant le script susceptible de lancer une exception, le compilateur oblige soit a faire un try...catch autours de cet appel, soit definir le champs throws de l'appelant a son tour, comme susceptible de lancer une exception non catchée. Ce qui doit se finir a force d'appels par au moins un try...catch. Pas avec les runtimeerror...!
- sachant cela, il est evident que c'est une feature peut-etre exclusive de PB (je connais pas d'autre exemple de langage supportant des exception non catchees)

Et donc, ce sont 2 branches d'objets throwable, qu'on peut heriteer, et qu'on ne devrait pas negliger d'utiliser a profusion...
Voila, fini...

Hors ligne

 

#11 28-03-2008 09:41:20

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: champs Throws

pour toutes ces précisions Cortex.

En fait c'est pareil en Java, et réciproquement


never let people work on more than one thing at once.

Hors ligne

 

#12 28-03-2008 09:50:20

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,776,000

Re: champs Throws

Cortex

Bah tu démérite pas ton nom quand même

000 pépites pour ces explications claires et très instructives

Dernière modification par Nephtis (28-03-2008 09:50:31)


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#13 09-05-2008 08:01:48

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: champs Throws

shahin a écrit:

La seule contrainte est que tu dois compiler en pbd (ie : pas de dll)

Une petite mise à jour : à partir de la version 10 on peut aussi compiler en dll


never let people work on more than one thing at once.

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22