En Java, la gestion de l'InterruptedException est cruciale lorsqu'il s'agit de méthodes qui peuvent lever cette exception. Deux approches courantes pour gérer cette interruption sont :
try { // ... } catch (InterruptedException e) { Thread.currentThread().interrupt(); }
Cette approche convient lorsque l'InterruptedException représente un résultat valide de la méthode et doit être propagée à l'appelant. Par exemple, si une méthode effectue un appel réseau bloquant qui lève InterruptedException, il est logique de laisser cette exception se propager, indiquant que l'opération a été interrompue.
try { //... } catch (InterruptedException e) { Thread.currentThread().interrupt(); throw new RuntimeException(e); }
Cette approche est préférée lorsque la méthode ne peut pas produire un résultat valide en cas d'interruption et doit se terminer. En définissant l'indicateur d'interruption (Thread.currentThread().interrupt()), cela garantit que le thread reste interrompu, informant l'appelant de l'interruption.
Le approprié L'approche dépend de la situation :
void printSum(Server server) { try { int sum = computeSum(server); System.out.println("Sum: " + sum); } catch (InterruptedException e) { Thread.currentThread().interrupt(); // set interrupt flag System.out.println("Failed to compute sum"); } }
Ici, la méthode printSum ne peut pas terminer son opération si elle est interrompue, elle intercepte donc l'InterruptedException, définit l'indicateur d'interruption et imprime un message alternatif.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!