Cela fait 5 mois que j'ai rejoint le site actuel, Dans les conversations avec des personnes sur le terrain, il y a beaucoup de choses comme «pourquoi cela se produit-il» et «que fait cette description? Parfois je regardais ensemble et disais "Je vois!".
Ce n'est pas bon de le terminer sur-le-champ, alors Je voulais le laisser comme un mémorandum pour moi-même.
Si vous avez des questions similaires, j'espère que vous trouverez cet article utile.
Conversation d'un jour
Mr. A "Qu'est ce que c'est
(int)
? " Je "** cast ** est celui-là. ** changera le type **." M. A "Merci beaucoup." ~ Quelques jours plus tard ~ Mr. A "J'ai une question, puis-je l'assigner à une variable de type Integer sans transtyper une valeur de type int **?" Je "Je peux le faire. ** Auto boxing ** ou ** Unboxing **, il semble que c'était une fonction avec ce nom ..."
public class Sample {
public void sample(long l) {
int i = (int) l;
Integer integer = i;
log.info("int=[{}], Integer=[{}]", i, integer);
}
}
java a une fonction qui effectue implicitement une conversion de type lors de l'affectation d'un type primitif (int) à une classe wrapper (Integer), qui est appelée autoboxing **. Contrairement à l'autoboxing, ** la fonction qui effectue implicitement la conversion de type d'une classe wrapper (Integer) vers un type primitif (int) est appelée unboxing **. Soyez prudent avec le déballage </ font>, ** La classe Wrapper peut gérer null car c'est un objet, mais lorsque j'essaye de l'attribuer à un type primitif, j'obtiens une NullPointerException **. Vérifions la valeur à l'avance.
Type primitif | Classe de wrapper |
---|---|
boolean | Boolean |
byte | Byte |
char | Character |
double | Double |
float | Float |
int | Integer |
long | Long |
short | Short |
Conversation d'un jour
Mr. A "Je pense qu'il y a une ** instruction try-catch **, mais quel est l'argument après cet essai?" I "Qu'est-ce que c'est ... Découvrons-le ..."
public void Sample {
public void sample(Strin url) {
try (BufferedReader br = new BufferedReader(new FileReader(url))) {
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Il s'agit d'une description appelée ** syntaxe try-with-resources ** qui peut être utilisée dans javaSE7 et versions ultérieures.
Avant javaSE6, il était nécessaire de décrire la ressource comme étant close ()
chaque fois que l'on accédait à un fichier ou à une base de données.
** Try-with-resources fermera automatiquement les ressources close ()
en quittant la clause try **.
try ()
)close ()
de try-with-resourcesclose ()
, vous pouvez obtenir le tableau Throwable avec ** ʻex.getSuppressed () `**.close ()
est l'ordre inverse dans lequel les ressources sont déclarées.Conversation d'un jour
Mr. A "Je voudrais poser une question sur cette source, qu'est-ce que ** jette ?" I " J'écris simplement explicitement les exceptions que la méthode pourrait lancer ** N'est-ce pas **? ** Il est possible de compiler sans cela ...? **" Mr. A "Je me fâche quand j'efface ** jette AAAException, non? ... Pourquoi?" Je "... pourquoi? ** Je n'ai pas besoin d'écrire une BBBException ** ..."
python
public class Sample {
public Object sample(String url, Request request) throws AAAException {
XXXClient client = new XXXClient();
try {
return client.request(url, reuqest);
} catch (AAAException ex) {
log.error("Une sorte de journal", ex);
throw ex;
} catch (BBBException ex) {
log.error("Une sorte de journal", ex);
throw ex;
}
}
}
Il existe deux types d'exceptions en Java appelés ** exceptions vérifiées (exceptions vérifiées) ** et ** exceptions non vérifiées (exceptions non vérifiées) **. (Strictement parlant, il y a une ** erreur **, mais elle est omise ici) ** Besoin de jeter les méthodes qui peuvent provoquer des exceptions vérifiées **. Dans cet exemple, ** AAAException était une exception vérifiée, donc des levées étaient requises, et BBBException était une exception non vérifiée, il n'était donc pas nécessaire d'ajouter des levées **.
Exception d'inspection
Exception qui est levée même si vous l'écrivez correctement et que vous vous comportez comme prévu (≒ rien ne peut être fait dans le programme d'implémentation)
Il s'agit d'une erreur prévisible, vous devez donc forcer l'appelant à la gérer (lancers requis)
Sous-classe de java.lang.Exception
IOException… Erreur d'E / S
FileNotFoundException… Fichier non trouvé
SQLException ... Erreur SQL ... etc.
Cela semble être un concept que seul java a </ font>
Exception non cochée
Exceptions lancées pour diverses causes (≒ peut être évitée par le programme de mise en œuvre)
Puisqu'il est difficile de prévoir tous les modèles qui peuvent se produire, l'appelant n'est pas obligé de gérer et l'exécution est arrêtée.
Sous-classe de java.lang.RuntimeException
NullPointerException… La valeur est NULL
NumberFormatException… La valeur ne peut pas être convertie en nombre
ArrayIndexOutOfRangeException… Il est hors de portée de la liste ou du tableau …… etc
Les autres langues n'ont essentiellement que des exceptions non cochées </ font>
Diagramme de classe simple
Faire une sortie à quelqu'un est l'occasion de voir si vous vous comprenez vraiment. Quand j'ai cherché à nouveau, j'ai approfondi ma compréhension et j'ai beaucoup appris. Nous continuerons de le mettre à jour de temps en temps!
Jusqu'à la fin Merci d'avoir lu!
Recommended Posts