Yhteensopimattomuudet Eclipsen versioiden 3.0 ja 3.1 välillä

Eclipse on muuttunut versioiden 3.0 ja 3.1 välillä yhteensopimattomilla tavoilla, jotka vaikuttavat lisäosiin. Seuraavat määritykset kuvaavat muuttuneita alueita. Lisäksi niissä on ohjeita 3.0-lisäosien siirtämisestä versioon 3.1. Huomaa, että näitä tietoja tarvitsee tutkia vain, jos 3.0-lisäosan ajossa 3.1-versiossa ilmenee ongelmia.

  1. Lisäosien oletusasetukset
  2. Muutokset IPath-rajoitteisiin
  3. Laajennusrekisteri
  4. Koodin muotoilutoiminnon asetukset
  5. AntCorePreferences-luokan sovellusohjelmaliittymäsopimuksen muutokset
  6. JFace-kehyksen Policy-luokan sovellusohjelmaliittymäsopimuksen muutokset
  7. Sovellusohjelmaliittymäsopimuksen muutokset tyhjän oletusperspektiivin sallimista varten
  8. IViewLayout-rajapinnan sovellusohjelmaliittymäsopimuksen muutokset
  9. IVMInstall-rajapinnan sovellusohjelmaliittymäsopimuksen muutokset
  10. SelectionEnabler.SelectionClass tehty paketissa näkyväksi
  11. ContributionItem.getParent() voi palauttaa null-arvon
  12. Muutokset IPropertySource- ja IPropertySource2-rajapintojen isPropertySet(boolean)-metodiin
  13. handlerSubmission-elementti poistettu org.eclipse.ui.commands-laajennuspisteestä
  14. TeamUI-luokan staattinen ei-lopullinen sovellusohjelmaliittymän kenttä GLOBAL_IGNORES_CHANGED muutettu lopulliseksi
  15. ClassCastException-poikkeus FillLayout-luokan käytön yhteydessä
  16. Widget-objektin, jonka pääobjekti on poistettu, luonti

1. Lisäosan oletusasetukset

Mitä muutos koskee: Lisäosia, jotka alustavat lisäosan oletusasetusten oletusarvot ohittamalla Plugin#initializeDefaultPreferences-metodin tai käyttävät oletusasetusten muutosten kuuntelutoimintoja.

Kuvaus: Eclipse 3.1 -versiossa org.eclipse.jface.preference.IPreferenceStore-objekti, joka on saatu org.eclipse.ui.plugin.AbstractUIPlugin#getPreferenceStore-metodista, on siirretty org.eclipse.core.runtime-lisäosan toimittaman uuden 3.0 Eclipse -oletusasetuskehyksen päälle.

Edellytetty toimi: tämän seurauksena oletusasetussovellusohjelmaliittymiä käyttävien asiakkaiden tulisi tarkastaa kaksi mahdollista ongelmaa:

  1. Oletusasetusten muutostapahtumien sisältämien objektien tyyppi ei ole selvä; sekä vanha että uusi arvo voivat olla tapahtumissa null, String-olio tai tyypitetty olio. Näin ollen oletusasetusten muutosten kuuntelutoimintojen tulisi pystyä käsittelemään kaikkia näitä kolmea mahdollista tilannetta.
  2. Jos lisäosa käyttää org.eclipse.ui.plugin.AbstractUIPlugin#initializeDefaultPreferences-lisäosaa, org.eclipse.core.runtime.compatibility-lisäosa on sisällytettävä lisäosan pakollisten lisäosien luetteloon, sillä tämä riippuvuus on poistettu org.eclipse.ui.workbench-lisäosasta.

Lisätietoja on myös tämän oppaan suositeltuja muutoksia koskevassa osiossa luvussa JFace-oletusarvovarastot.

2. Muutokset IPath-rajoitteisiin

Mitä muutos koskee: Lisäosia, jotka luovat, käsittelevät tai tallentavat IPath-objekteja.

Kuvaus: Eclipse 3.0 -versiossa IPath-rajapinnalla oli monia polun osia koskevia rajoituksia, jotka olivat rajoittavampia kuin pohjalla olevan käyttöjärjestelmän rajoitukset. Tällaisia rajoituksia olivat esimerkiksi seuraavat:

Nämä rajoitukset on poistettu Eclipse 3.1 -versiossa, kun ympäristön tietosijainti (työtila) sijaitsee tiedostojärjestelmässä, jossa ei ole näitä rajoituksia.

Edellytetty toimi: Jotta laajennettua polkujen alaa voitaisiin käsitellä oikein, kaikki Path-luokan ja IPath-rajapinnan käyttö lisäosien sisällä tulisi käydä läpi ja päivittää alla kuvatulla tavalla. Useimmat muuttamattomat lisäosat toimivat edelleen täysin samoin kuin versiossa 3.0 kaikissa poluissa, jotka ovat luvallisia versiossa 3.0. Ellei näitä muutoksia kuitenkaan tehdä, ne todennäköisesti aiheuttavat virheen tapauksissa, joissa on versiossa 3.1 luvallisina pidettyjä polkuja, jotka eivät olleet sallittuja versiossa 3.0.

Lisäosat, jotka tallentavat merkkijonomuotoisia polkujen esityksiä muodossa, jonka tulee olla luettavissa eri ympäristöissä, tulee siirtää uuteen Path.fromPortableString-factory-metodiin. Tämä metodi tuottaa IPath-ilmentymän ympäristöstä riippumattomassa muodossa. Tämän polkujen merkkijonomuotoisen esityksen voi luoda IPath.toPortableString-metodilla. Esimerkkejä metatietotiedostoista, joita muutos koskee, ovat tiedostot, jotka on tallennettu Eclipse-työtilaprojektien sisään (.project, .classpath jne.), ja kaikki polut, jotka on tallennettu oletusarvojen varastoon (org.eclipse.core.runtime.preferences.IPreferencesService).

Huomautus: fromPortableString lukee oikein kaikki polkumerkkijonot, jotka on luotu Eclipse 3.0 -version IPath.toString-metodilla, mutta ei Eclipse 3.1 -version toString-metodilla. Näin useimmissa tapauksissa metatietotiedostojen muotoa ei tarvitse muuttaa lukuun ottamatta polkujen kirjoituksen toPortableString-metodilla ja polkujen luvun fromPortableString-metodilla aloitusta varten.

Lisäosat, jotka loivat polkuja pysyväiskoodatuista merkkijonoliteraaleista, jotka olettivat merkeillä ":" ja "\" olevan erityismerkitys kaikissa ympäristöissä, on siirrettävä uuteen versioon. Helpoin ratkaisu on rajoittaa merkkijonopolkuliteraalit alijoukkoon, joka on tuettu kaikissa ympäristöissä (vältä kaksoispisteitä ja kenoviivoja). Polkuliteraalit voivat tukea kaikkia kelvollisia Unix-polkuja käyttämällä siirrettävää polkujen merkkijonomuotoa, jonka tuottaa Path.toPortableString. Tämä muoto tulkitsee ensimmäisen yksittäisen kaksoispisteen (":") laitteen erottimeksi, vinoviivan (/) osan erottimeksi ja kaksi kaksoispistettä (:) literaaliksi kaksoispistemerkiksi. Esimerkiksi koodi new Path("c:/temp") luo nyt Unix-ympäristössä suhteellisen polun, jossa on kaksi osaa. Vastaavasti new Path("a\\b") luo nyt Unix-ympäristössä polun, jossa on yksi osa, ja Windows-ympäristössä polun, jossa on kaksi osaa.

Sellaisten lisäosien koodi on mahdollisesti päivitettävä, jotka muodostavat polkuja IPath.append(String)-metodilla, joka oletti merkeillä ":" ja "\" olevan erityismerkitys kaikissa ympäristöissä. Eclipse 3.1 -versiossa tämä metodi käyttää käyttöjärjestelmäkohtaisia laitteen ja osien erottimia toimitetun polkumerkkijonon tulkinnassa. Esimerkiksi metodin append("a\\b") kutsu Unix-ympäristössä liittää nyt yhden osan, kun taas Windowsissa se jatkaa liittämään kaksi osaa.

Ympäristön lukemat ja tulkitsemat tietotiedostot eivät enää käsittele merkkejä ':' ja '\' erikoismerkkeinä kaikissa ympäristöissä. Kaikkien datatiedostoihin tallennettujen polkujen, joita voidaan lukea useissa ympäristöissä, on oltava siirrettävässä muodossa. Esimerkiksi plugin.xml-tiedoston kuvaketiedostojen polkujen ja muiden polkujen tulee käyttää ainoastaan merkkiä "/" polun osien erottimena.

3. Laajennusrekisteri

Mitä muutos koskee: Lisäosia, jotka käsittelevät tai pidättävät IExtensionPoint-, IExtension- ja IConfigurationElement-objekteja Eclipse-ympäristön lisäosa- tai laajennusrekisteristä.

Kuvaus: Versiota 3.0 edeltäneissä versioissa kaikki laajennusrekisteristä (tai entisestä lisäosarekisteristä) poimitut objektit olivat ikuisesti käyttökelpoisia. Eclipse 3.0 -versiossa tehtiin muutoksia, joiden avulla lisäosia pystyi dynaamisesti lisäämään ja poistamaan joutumatta aloittamaan Eclipse-ympäristöä uudelleen. Kun lisäosa poistetaan ilman uudelleen aloitusta, sen merkinnät laajennusrekisterissä muuttuvat väistämättä virheellisiksi. Tämä tarkoittaa sitä, että toinen lisäosa, joka pidättää poistetun lisäosan laajennusrekisterin merkinnästä aiemmin poimitun objektin, jäisi pitelemään kelvotonta objektia. Ainoan vihjeen, jonka asiakas voisi saada, tulisi IRegistryChangeEvent-rajapinnan kuuntelusta. Ongelma on ollut olemassa Eclipse 3.0 -versiosta alkaen, mutta se kohdataan harvoin käytännössä, sillä on erittäin epätavallista, että lisäosa poistetaan aloittamatta Eclipse-ympäristöä uudelleen.

Ongelmaa on käsitelty versiossa 3.1 seuraavasti:

Edellytetty toimi: jos lisäosan pitää olla tietoinen dynamiikasta (eli pystyä käsittelemään lisäosien lisäystä tai poistoa lennossa), toisesta lisäosasta saatua IExtensionPoint-, IExtension- ja IConfigurationElement-objektia käsittelevä koodi on muutettava sieppaamaan IRegistryChangeEvent aivan kuin se olisi tarkistettu poikkeus. Poikkeuksen sieppaus (isValid()-esitarkistuksen sijaan) on ainoa varma tapa käsitellä tapausta, jossa samanaikainen säie poistaa lisäosan (ja jos näin käy, se melko varmasti on).

4. Koodin muotoilutoiminnon asetukset

Mitä muutos koskee: Lisäosia, jotka käsittelevät ohjelmallisesti Java-koodin muotoilutoiminnon asetuksia.

Kuvaus: Eclipse 3.0 -versiossa koodin muotoilutoiminnon asetuksen org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants#FORMATTER_TAB_CHAR arvona saattoi olla ainoastaan TAB taitai SPACE. Määrityksessä ei mainittu erikseen, että arvon laji oli luettelo, joka saattaa kasvaa tulevissa laitoksissa. Eclipse 3.1 -versiossa kolmas mahdollinen arvo MIXED lisättiin korjauksena virheeseen 73104. Määritystä on muutettu sisältämään tämä uusi arvo ja mahdollistamaan uusien arvojen lisäys tulevaisuudessa.

Edellytetty toimi: Asiakkaiden, jotka lukevat tai asettavat tämän koodin muotoilutoiminnon asetuksen ohjelmallisesti, tulisi tarkistaa koodinsa ottamaan uusi kolmas arvo huomioon ja varmistamaan, että se on kirjoitettu vakaalla tavalla, joka siirtyy virhetilaan siististi kohdatessaan odottamattoman asetuksen arvon.

5. AntCorePreferences-luokan sovellusohjelmaliittymäsopimuksen muutokset

Mitä muutos koskee: Lisäosia, jotka ovat org.eclipse.ant.core.AntCorePreferences-luokan aliluokkia tai luovat sen ilmentymiä

Kuvaus: Eclipse 3.0 -versiossa org.eclipse.ant.core.AntCorePreferences-luokassa ei ollut merkintää, että asiakkaat eivät voi eritellä sitä tai olla sen aliluokkia. Tämä laiminlyönti on korjattu Eclipse 3.1 -versiossa merkitsemällä luokkaan, että sillä ei ole tarkoitus olla aliluokkia eikä sitä ole tarkoitus eritellä.

Edellytetty toimi: Asiakkaiden, jotka luovat ohjelmallisesti org.eclipse.ant.core.AntCorePreferences-luokan ilmentymän, tulisi siirtää koodinsa noutamaan oletusarvot org.eclipse.ant.core.AntCorePlugin.getPreferences()-metodilla. Mahdolliset aliluokat tulee käsitellä uudelleen niin, että ne eivät ole enää org.eclipse.ant.core.AntCorePreferences-luokan aliluokkia.

6. JFace-kehyksen Policy-luokan sovellusohjelmaliittymäsopimuksen muutokset

Mitä muutos koskee: RCP-sovelluksia, jotka ohittavat työympäristön asettaman JFace-lokin.

Kuvaus: Eclipse 3.0 -versiossa työympäristö asetti työympäristön lokin JFace-virheiden kirjaamiseen käytettäväksi lokiksi välittämällä työympäristön lisäosan lokin suoraan org.eclipse.jface.util.Policy.setLog(ILog)-metodiin. Versiossa 3.1 ILog-riippuvuus on poistettu JFace-kehyksestä mahdollistamaan Eclipse-ajoympäristön ulkopuolella ajettavat itsenäiset SWT:tä ja JFacea käyttävät sovellukset. Uusi rajapinta ILogger on lisätty JFacen tarpeisiin. Työympäristö on muutettu toimittamaan ILogger-rajapinta, joka kierrättää työympäristön ILog-rajapinnan. Lisätietoja on virheessä 88608.

Edellytetty toimi: Useimpien RCP-sovellusten ei pitäisi tarvita ohittaa työympäristön asettamaa lokia, mutta jos ne ovat aiemmin kutsuneet Policy.setLog(ILog)-metodia, ne tulee muuttaa välittämään sen sijaan ILogger-rajapinta.

7. Sovellusohjelmaliittymäsopimuksen muutokset tyhjän oletusperspektiivin sallimista varten

Mitä muutos koskee: RCP-sovelluksia, jotka odottavat oletusperspektiiviä, jonka arvo ei ole null.

Kuvaus: Jotta RCP-sovellukset voisivat aloittaa tyhjästä ikkunasta, jossa ei ole avoimia perspektiivejä (laajennus 71150), WorkbenchAdvisor.getInitialWindowPerspectiveId() ja IPerspectiveRegistry.getDefaultPerspective() on muutettu sallimaan null-arvon palautus. Kehitysympäristössä on aina oletusperspektiivi, joten IPerspectiveRegistry.getDefaultPerspective() ei palauta null-arvoa. Vastaavasti jos olemassa oleva RCP-sovellus on aiemmin palauttanut muun kuin null-arvon WorkbenchAdvisor.getInitialWindowPerspectiveId()-metodista, IPerspectiveRegistry.getDefaultPerspective() palauttaa edelleen arvon, joka ei ole null.

Edellytetty toimi: asiakkailta ei pitäisi edellyttää mitään toimia.

8. IViewLayout-rajapinnan sovellusohjelmaliittymäsopimuksen muutokset

Mitä muutos koskee: Lisäosia, jotka toteuttavat org.eclipse.ui.IViewLayout-rajapinnan

Kuvaus: Eclipse 3.0 -versiossa luokassa org.eclipse.ui.IViewLayout ei ollut merkintää, että asiakkaiden ei tule toteuttaa sitä. Tämä laiminlyönti on korjattu Eclipse 3.1 -versiossa merkitsemällä luokkaan, että asiakkaiden ei ole tarkoitus toteuttaa sitä.

Edellytetty toimi: toteuttavat luokat tulee käsitellä uudelleen niin, etteivät ne enää toteuta org.eclipse.ui.IViewLayout-rajapintaa.

9. IVMInstall-rajapinnan sovellusohjelmaliittymäsopimuksen muutokset

Mitä muutos koskee: Lisäosia, jotka toteuttavat org.eclipse.jdt.launching.IVMInstall-rajapinnan.

Kuvaus: Eclipse 3.0 -versiossa luokassa org.eclipse.jdt.launching.IVMInstall ei ollut merkintää, että asiakkaat eivät saa toteuttaa suoraan. Tämä laiminlyönti on korjattu Eclipse 3.1 -versiossa merkitsemällä luokkaan, että asiakkaiden ei ole tarkoitus toteuttaa sitä suoraan. Binaarisen yhteensopivuuden ylläpitämistä varten asiakkaiden on annettu edelleen toteuttaa rajapinta suoraan, mutta on erittäin suositeltavaa, että asiakkaat ovat sen sijaan org.eclipse.jdt.launching.AbstractVMInstall-luokan aliluokkia. IVMInstall-rajapinnan toteuttavien asiakkaiden tulisi toteuttaa myös uusi valinnainen rajapinta org.eclipse.jdt.launching.IVMInstall2, jonka AbstractVMInstall nyt toteuttaa. Asiakkaiden suositellaan toteuttavan uusi rajapinta IVMInstall2, jotta vältyttäisiin virheessä 73493 ilmoitetulta häiriöltä. Suositeltu siirto on AbstractVMInstall-luokan aliluokka.

Edellytetty toimi: kaikki toteuttavat luokat, jotka eivät jo ole org.eclipse.jdt.launching.AbstractVMInstall-luokan aliluokkia, tulisi siirtää org.eclipse.jdt.launching.AbstractVMInstall-luokan aliluokiksi.

10. SelectionEnabler.SelectionClass tehty paketissa näkyväksi

Mitä muutos koskee: Lisäosia, jotka käyttävät org.eclipse.ui.SelectionEnabler.SelectionClass-luokkaa.

Kuvaus: Eclipse 3.0 -versiossa sisäkkäinen toteutusluokka org.eclipse.ui.SelectionEnabler.SelectionClass oli julkinen, eikä sen käytölle ollut rajoituksia. Tämä laiminlyönti on korjattu Eclipse 3.1 -versiossa tekemällä luokasta paketissa näkyvä.

Edellytetty toimi: Kaikki luokat, jotka luovat org.eclipse.ui.SelectionEnabler.SelectionClass-luokan ilmentymiä tai laajentavat sen, on muokattava niin, etteivät ne enää viittaa tähän luokkaan.

11. ContributionItem.getParent() voi palauttaa null-arvon

Mitä muutos koskee: Lisäosia, jotka kutsuvat getParent()-metodin org.eclipse.jface.action.ContributionItem-luokan aliluokassa.

Kuvaus: Eclipse 3.0 -versiossa org.eclipse.jface.action.ContributionItem.getParent()-metodi ei määrittänyt, että se voi palauttaa null-arvon. Tämä laiminlyönti on korjattu Eclipse 3.1 -versiossa metodin Javadocilla, joka erittelee, milloin se voi palauttaa null-arvon. Lisätietoja on virheessä 92777.

Edellytetty toimi: Kaiken koodin, joka kutsuu ContributionItem.getParent()-metodia, on varmistuttava, että se voi käsitellä null-tulosta.

12. Muutokset IPropertySource- ja IPropertySource2-rajapintojen isPropertySet(boolean)-metodiin

Mitä muutos koskee: Lisäosia, jotka toteuttavat org.eclipse.ui.views.properties.IPropertySource- tai IPropertySource2-rajapinnan.

Kuvaus: Eclipse 3.0 -versiossa metodinorg.eclipse.ui.views.properties.IPropertySource.isPropertySet(boolean) määritystä oli muutettu virheellisesti määrittämään, että arvo true tulee palauttaa, jos määritetyllä ominaisuudella ei ollut merkityksellistä oletusarvoa. Aiemmissa versioissa se määritti, että tällaisessa tapauksessa tulee palauttaa arvo false. Tämä oli tahaton keskeyttävä sovellusohjelmaliittymän muutos, vaikka toteutus toimi samalla tavalla kuin aiemmin, jos ominaisuuden lähde toteutti IPropertySource-rajapinnan eikä IPropertySource2-rajapintaa. Tämä on korjattu versiossa 3.1 siten, että IPropertySource.isPropertySet(boolean) on palautettu takaisin aiempaan määritykseen (että arvo false palautetaan tässä tapauksessa) ja IPropertySource2.isPropertySet(boolean) ohittaa tämän ja määrittää, että tässä tapauksessa palautetaan arvo true. Lisätietoja on virheessä 21756.

Edellytetty toimi: kaikki luokat, jotka toteuttavat IPropertySource- tai IPropertySource2-rajapinnan, joissa joillain ominaisuuksilla ei ole merkityksellisiä oletusarvoja, tulee tarkistaa ja varmistaa, että ne palauttavat oikean arvon isPropertySource(boolean)-metodille. Asiakkaiden tulee tarkistaa, että Ominaisuudet-näkymän Palauta oletusarvo -painike toimii odotetulla tavalla ominaisuuden lähteen osalta.

13. handlerSubmission-elementti poistettu org.eclipse.ui.commands-laajennuspisteestä

Mitä muutos koskee: Lisäosia, jotka käyttivät kokeellista handlerSubmission-elementtiä, joka lisättiin org.eclipse.ui.commands-laajennuspisteeseen Eclipse 3.0 -versiossa.

Kuvaus: Eclipse 3.0 -versiossa org.eclipse.ui.commands-laajennuspisteeseen lisättiin kokeellinen elementti. Tämän elementin tarkoituksena oli rekisteröidä käsittelytoiminnot XML:n avulla. Tämän jälkeen on lisätty paljon parempi mekanismi, org.eclipse.ui.handlers-laajennuspiste. Koska elementti oli merkitty kokeelliseksi, se on nyt poistettu.

Edellytetty toimi: kaikki lisäosat, jotka määrittävät handlerSubmission-elementin, tulee siirtää org.eclipse.ui.commands-laajennuspisteeseen.

14. TeamUI-luokan staattinen ei-lopullinen sovellusohjelmaliittymän kenttä GLOBAL_IGNORES_CHANGED muutettu lopulliseksi

Mitä muutos koskee: Lisäosia, jotka asettivat TeamUI-luokan kentän GLOBAL_IGNORES_CHANGED.

Kuvaus: Eclipse 3.0 -versiossa GLOBAL_IGNORES_CHANGED-kenttä lisättiin TeamUI-luokkaan. Tämä kenttä on vakio, jota käytetään osoittamaan, että ryhmälisäosan ylläpitämä yleisten ohitusten luettelo on muuttunut. Tätä kenttää ei ollut merkitty lopulliseksi versiossa 3.0, vaikka olisi pitänyt. Se on muutettu lopulliseksi versiossa 3.1.

Edellytetty toimi: lisäosat, jotka asettivat edellä mainitun kentän, eivät enää voi tehdä sitä.

15. ClassCastException-poikkeus FillLayout-luokan käytön yhteydessä

Mitä muutos koskee: Lisäosia, jotka käyttävät FillLayout-luokkaa virheellisesti.

Kuvaus: Eclipse 3.0 -versiossa FillLayout-luokkaan ei ollut liitetty mitään asettelutietoja, ja jos sovellus osoitti asettelutiedot FillLayout-luokan hallitsemalle aliobjektille, ne ohitettiin. Eclipse 3.1 -versiossa on lisätty FillLayout-luokan tuki välimuistin koon tiedoille koon muuton suorituskyvyn lisäämistä varten. Välimuistissa olevat tiedot tallennetaan FillData-objektiin, joka liittyy kuhunkin FillLayout-luokan hallitsemaan aliobjektiin. Jos sovellus on virheellisesti määrittänyt asettelutiedot aliobjektiin, ClassCastException-poikkeus tuotetaan, kun pääobjektissa kutsutaan computeSize.

Edellytetty toimi: Etsi FillLayout-luokan aliobjektit, joille on määritetty asettelutietoja, ja lopeta asettelutietojen määritys.

16. IllegalArgumentException-poikkeus luotaessa widget-objektia, jonka pääobjekti on poistettu

Mitä muutos koskee: Lisäosia, jotka sieppaavat poikkeuksia widget-objektien luonnin aikana.

Kuvaus: Jos Eclipse 3.0 -versiossa luotiin widget-objekti, jonka pääobjekti oli poistettu, poikkeusta ei tuotettu ja widget-objektin koodi epäonnistui myöhemmin, tai tuotettiin SWTException-poikkeus, jossa oleva teksti ilmoitti, että widget-objekti on poistettu. Jos Eclipse 3.1 -versiossa luodaan widget-objekti, jonka pääobjekti on poistettu, konstruktori tuottaa IllegalArgumentException-poikkeuksen, jossa oleva teksti ilmoittaa, että argumentti ei ole kelvollinen.

Edellytetty toimi:koodin, joka käsittelee SWTException-poikkeuksen widget-objektin luonnin yhteydessä, tarvitsee käsitellä myös IllegalArgumentException.