La variable locale n'aurait pas été initialisée Détecter décoché exception jeter dans une méthode
J'ai un code avec cette structure:
public void method() {
Object o;
try {
o = new Object();
} catch (Exception e) {
//Processing, several lines
throw new Error(); //Our own unchecked exception
}
doSomething(o);
}
J'ai assez peu de méthodes dans lesquelles j'ai le même code dans le bloc catch, donc je veux l'extraire à une méthode afin que je puisse sauver quelques lignes. Mon problème, c'est que si je fais ça, j'obtiens une erreur du compilateur"
La variable locale o n'aurait pas été initialisé".
public void method() {
Object o;
try {
o = new Object();
} catch (Exception e) {
handleError();
}
//doSomething(o); compiler error
}
private void handleError() throws Error {
//Processing, several lines
throw new Error();
}
Est-il une solution de contournement?
Remarque:la variable d'Instance, pas besoin d'initialiser mais la variable locale(variable à l'intérieur d'une méthode) besoin d'initialiser
OriginalL'auteur Luis Sep | 2013-08-07
Vous devez vous connecter pour publier un commentaire.
Vous devez initialiser les variables locales avant qu'ils soient utilisés comme ci-dessous
Vous n'obtiendrez pas la compilation de l'échec jusqu'à ce que vous utilisez une variable locale qui n'a pas été initialisé
OriginalL'auteur Sanjaya Liyanage
Initialiser votre objet:
Object o = null;
, cependant attention pour lesNullPointerException
s qui peut être levée lorsque vous nous les donner pour les appels de méthode.OriginalL'auteur Juvanis
Depuis
o
est arriver initialisé dans latry
bloc et de l'initialisation d'o
peut lever une exception, java pense quedoSomething(o)
instruction peut atteindre sanso
en cours d'initialisation. Donc java veuto
être initialisé en casnew Object()
throws exception.Donc l'initialisation
o
avecnull
résoudre le problèmeVrai, je suis d'accord. Mon intention était de donner la solution et d'expliquer pourquoi nous sommes d'erreur
OriginalL'auteur sanbhat
Il suffit de mettre la
doSomething(o)
à l'intérieur de latry { }
bloc:Peut-être vous ne voulez pas exécuter doSomething() si la création de votre Objet ne!
OriginalL'auteur Gyro Gearless
Variable d'Instance est le type d'Objet, donc vous devez les initialiser la valeur "null"
OriginalL'auteur Mohsin Shaikh