Gids voor ArrayStoreException

1. Overzicht

ArrayStoreException wordt tijdens runtime in Java gegenereerd wanneer een poging wordt gedaan om het onjuiste type object in een reeks objecten op te slaan. Sinds ArrayStoreException is een ongecontroleerde uitzondering, het is niet typisch om deze te behandelen of te declareren.

In deze tutorial demonstreren we de oorzaak van ArrayStoreException, hoe ermee om te gaan en beste praktijken om het te vermijden.

2. Oorzaken van ArrayStoreException

Java gooit een ArrayStoreException wanneer we proberen een ander type object in een array op te slaan in plaats van het gedeclareerde type.

Stel dat we een array hebben geïnstantieerd met Draad type en later geprobeerd op te slaan Geheel getal in het. In dit geval, tijdens runtime, ArrayStoreException wordt gegooid:

Object array [] = nieuwe string [5]; matrix [0] = 2;

De uitzondering wordt gegenereerd op de tweede regel code wanneer we proberen een onjuist waardetype in de array op te slaan:

Uitzondering in thread "main" java.lang.ArrayStoreException: java.lang.Integer op com.baeldung.array.arraystoreexception.ArrayStoreExceptionExample.main (ArrayStoreExceptionExample.java:9)

Sinds we hebben verklaard array als een Voorwerp, de compilatie is foutloos.

3. Omgaan met het ArrayStoreException

De afhandeling van deze uitzondering is vrij eenvoudig. Zoals elke andere uitzondering, moet dit ook zo zijn omringd in een try-catch-blok voor behandeling:

probeer {Object array [] = new String [5]; matrix [0] = 2; } catch (ArrayStoreException e) {// de uitzondering afhandelen}

4. Praktische tips om deze uitzondering te vermijden

Het is aanbevolen om het array-type te declareren als een specifieke klasse, zoals Draad of Geheel getal, in plaats van Voorwerp. Wanneer we het array-type declareren als Voorwerp, dan zal de compiler geen enkele fout genereren.

Maar het declareren van de array met de basisklasse en vervolgens het opslaan van objecten van een andere klasse zal leiden tot een compilatiefout. Laten we dit eens bekijken met een snel voorbeeld:

String-array [] = nieuwe String [5]; matrix [0] = 2;

In het bovenstaande voorbeeld declareren we het array-type als Draad en probeer een Geheel getal in het. Dit leidt tot een compilatiefout:

Uitzondering in thread "main" java.lang.Error: onopgelost compilatieprobleem: Type komt niet overeen: kan niet converteren van int naar String op com.baeldung.arraystoreexception.ArrayStoreExampleCE.main (ArrayStoreExampleCE.java:8)

Het is beter als we fouten opvangen tijdens het compileren in plaats van tijdens runtime omdat we meer controle hebben over de eerste.

5. Conclusie

In deze tutorial hebben we de oorzaken, behandeling en preventie van ArrayStoreException in Java.

Het volledige voorbeeld is beschikbaar op GitHub.