[oop] InvalidArgumentException

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.Net ontwikkelaar - Het schoolsysteem verbeteren!

Bedrijfsomschrijving Onze klant is een prettige en kleinschalige organisatie waar hard gewerkt wordt om het onderwijs te verbeteren. Daarom werken ze aan complexe om administratieve, financiële en facilitaire processen te versnellen en te verbeteren. Dit doen ze vanuit een platte organisatie voor klanten die door geheel Nederland verspreid zitten, hier horen vanzelfsprekend een aantal aansprekende HBO scholen en universiteiten toe. Functieomschrijving Je komt terecht in een organisatie waar op dit moment 2 scrumteams werken. Jij zal als .Net developer binnen 1 van deze scrumteams functioneren, iedereen binnen dit team heeft zijn/haar eigen expertise waardoor er met verschillende invalshoeken aan een

Bekijk vacature »

Junior .NET developer

Functie Om half 9 kom jij binnen en pak jij als eerst natuurlijk een bakje koffie of thee. Vervolgens ga jij je voorbereiden op de stand-up van kwart voor 9. Zijn er bijvoorbeeld dingen waar jij nog tegen aan loopt? Of is er nog code die getest of gereviewd moet worden? Vervolgens starten jullie met de stand up en na de stand up zoeken jullie elkaar op en gaan jullie aan de slag. Als team met 6 developers werken jullie in drie wekelijkse sprints. Het einde van een sprint is altijd op een donderdag zodat jullie op vrijdag de demo

Bekijk vacature »

Java developer (remote)

Functie Wat ga je doen als Java Developer? Jij als Java ontwikkelaar komt te werken in 1 van onze SCRUM teams. Momenteel werken er zo’n 30 ontwikkelaars binnen onze organisatie waarbij jij de brug slaat tussen het bouwen van verschillende functionaliteiten binnen onze applicaties en deze vervolgens te integreren in onze centrale hub. Je start je dag om 9 uur met een stand up en dan pak je jouw taken op voor de dag. Hieronder een aantal taken die jij zal uitvoeren: – Het bedenken en uitbouwen van features binnen de verschillende applicaties – Onderhouden van CI/CD pipelines – Bezighouden

Bekijk vacature »

Ambitieuze medior developer

Wat je gaat doen: Heb jij al een paar jaar ervaring als developer maar wil jij naar the next level? In ons NextLevelDev Programma helpen wij jou om de volgende stap te zetten: een mooi programma aan trainingen op het gebied van Java, hippe frameworks, Agile/Scrum, OCP-certificering en optioneel: andere JVM-talen als Kotlin en Scala; Cloud (AWS, Azure, GCP) Soc Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun

Bekijk vacature »

Java Developer

Dit ga je doen Het ontwikkelen van nieuwe software; Het ombouwen van de bestaande software; Zowel back- als front-end software ontwikkelen; Het testen; Het implementeren van de volledig geteste software; Het verzorgen van nazorg en het oplossen van bugs; Het opstellen en bijhouden van procesdocumentatie; Je draagt bij aan het agile/scrum processen van het team. Hier ga je werken Ongetwijfeld heb je een of meerdere producten van deze organisatie in huis. Het proces erachter, daar ben je ongetwijfeld minder bekend mee. Deze opdracht geeft je de kans meer over dit proces te weten te komen en een mooie bijdrage te

Bekijk vacature »

Software Programmeur

Functie omschrijving Voor onze opdrachtgever in omgeving Rotterdam zijn wij opzoek naar een software programmeur die goed kan schrijven in de talen C of C++ en die het leuk vind om te werken met Linux! Werkzaamheden Programmeur Je bent bezig met het ontwikkelen van software en webapplicaties. Je kunt technische klussen uitvoeren op locatie. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een project goed verloopt. Je zult klanten ondersteunen. Verder zul je technische ontwerpen en gebruikersdocumentaties schrijven en deze onderhouden. Bedrijfsprofiel Dit bedrijf wil de klanten een volledige oplossing kunnen bieden, waarbij ze een

Bekijk vacature »

Junior .NET developer

Functie Ons programma is voor afgestudeerde enthousiastelingen die het als een uitdaging zien om met een klein dynamisch team bij de grootste bedrijven van Nederland aan de slag te gaan. Tijdens jouw dienstverband word jij begeleid door een talent manager. Het ontwikkelen van jouw talent staat hierbij centraal. Het programma doorloop je met een team van circa 8 Mede- trainees. De eerste maand start je met een fulltime inhouse opleiding. Deze staat geheel in het teken van de werkzaamheden die jij verder in het programma zult uitvoeren. Na deze opleidingsmaand ga je aan de slag in een dynamische omgeving bij

Bekijk vacature »

.Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij dit jaar Microsoft Partner of the year geworden. Sogetisten staan klaar voor elkaar, hebben lol met elkaar en daarmee behalen we de mooiste resultaten! Werken bij Sogeti

Bekijk vacature »

Medior Front-end Developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als Medior Front-end Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Onze klantenkring is groot en divers, dat vraagt om flexibiliteit van jou. Tegelijkertijd betekent dit dagelijks nieuwe dingen leren én dat geen werkdag hetzelfde is. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling waarbij iedereen welkom is, zowel

Bekijk vacature »

Fullstack Software Developer

Functieomschrijving Voor een ambitieuze werkgever in regio Roosendaal zijn wij op zoek naar een Full Stack C#.NET Developer. Als software programmeur ben je verantwoordelijk voor het bouwen van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Je werkt samen met andere developers en engineers om de sensoren in machines uit te lezen en deze data om te zetten in management informatie voor jullie klanten. Taken en verantwoordelijkheden: Verder ontwikkelen en onderhouden van webapplicaties, dashboards en apps voor de eigen IOT-oplossingen; Testen en goedkeuren van de software; Je gaat aan de slag met de volgende technologieën en frameworks: C#, JS frameworks,

Bekijk vacature »

PHP Software Developer

Functie omschrijving PHP Software Developer gezocht! Voor een organisatie in de regio Zeist die zich bezighoud met het verbeteren van de medicatieveiligheid zoeken wij een Software Developer. In deze functie zijn wij op zoek naar een slimme en enthousiaste Developer die interesse heeft in farmacie, logistiek en ICT. Daarnaast beschik je over een goed analytisch vermogen en ben je van nature gestructureerd en resultaatgericht. Je moet in deze functie daadkrachtig, flexibel en communicatief goed zijn. Je verantwoordelijkheden bestaan uit: Object georiënteerd programmeren; Werken in een scrumteam aan de ontwikkeling van een medicatiebewakingssysteem; Meedenken over de mogelijkheden en onmogelijkheden van projecten;

Bekijk vacature »

Junior PHP Developer

Je maakt een vliegende start van je carrière, door meteen mee te bouwen aan de digitale aspecten van Coolblue. Wat doe je als Junior PHP Developer bij Coolblue? Als Junior PHP Developer ben je meteen vanaf de start onderdeel van een development team. Je kijkt veel mee met collega’s en volgt trainingen om te groeien als Junior Developer. Op dat moment komt je wil om steeds te blijven leren naar boven. Daarnaast pak je in de sprints ook je eigen stories op om Coolblue iedere dag een beetje beter te kunnen maken. Je sterk analytisch vermogen komt dan ook goed

Bekijk vacature »

PHP Software Developer

Functie omschrijving PHP Software Developer gezocht! Voor een organisatie in de regio Zeist die zich bezighoud met het verbeteren van de medicatieveiligheid zoeken wij een Software Developer. In deze functie zijn wij op zoek naar een slimme en enthousiaste Developer die interesse heeft in farmacie, logistiek en ICT. Daarnaast beschik je over een goed analytisch vermogen en ben je van nature gestructureerd en resultaatgericht. Je moet in deze functie daadkrachtig, flexibel en communicatief goed zijn. Je verantwoordelijkheden bestaan uit: Object georiënteerd programmeren; Werken in een scrumteam aan de ontwikkeling van een medicatiebewakingssysteem; Meedenken over de mogelijkheden en onmogelijkheden van projecten;

Bekijk vacature »

PHP Back-end Developer

Vacature details Vakgebied: Software/IT Opleiding: Starter Werklocatie: Nijmegen Vacature ID: 13633 Introductie OUr client develop websites, webshops, and digital environments that are used by many visitors daily. They are seeking an experienced PHP-Developer Back-end to join the team. If you're looking for a position where you can tackle challenging, innovative, and multidisciplinary ICT projects and make a difference, this vacancy might be for you! Functieomschrijving As a PHP developer, you'll develop websites and digital environments used by many visitors daily. You'll work as a back-end developer and want to continuously develop in this field. You can work independently and efficiently,

Bekijk vacature »

.NET software developer

Functie omschrijving Voor een gewilde werkgever in omgeving Roosendaal zijn wij op zoek naar een back-end software developer met een aantal jaar werkervaring. Je krijgt een plekje in het workflow team en je zal betrokken worden bij het bouwen van nieuwe software, en het optimaliseren van bestaande code. Je werkt bij dit bedrijf in een Scrum team waarin je soms klantcontact hebt. Jouw werkzaamheden zullen er als volgt uit zien: Je krijgt een plekje op de in-house IT afdeling. Deze afdeling bestaat uit zo'n 12 collega's, verdeeld over verschillende specialisaties (BI, Beheer, Business software & workflow). De vacature staat open

Bekijk vacature »
Ozzie PHP

Ozzie PHP

10/03/2014 21:57:33
Quote Anchor link
Ola,

Als ik op php.net kijk bij de omschrijving van InvalidArgumentException dan staat er:

"Exception thrown if an argument is not of the expected type."

Nu vraag ik me af of je een InvalidArgumentException ook kunt gooien op het moment dat er een key/id wordt aangeroepen die niet bestaat. In principe zou je dan kunnen zeggen dat het argument ook ongeldig is. Je hebt immers iets aangeroepen dat niet bestaat.

Nu zie ik dat PHP ook een OutOfBoundsException kent:

"Exception thrown if a value is not a valid key. This represents errors that cannot be detected at compile time."

Als ik het goed begrijp zou dit de exception zijn die je moet gooien als een key niet bestaat?

Ik vind het een lastig onderscheid eerlijk gezegd. Waarom niet uitsluitend de InvalidArgumentException gebruiken? Hoe doen jullie dat?
 
PHP hulp

PHP hulp

28/12/2024 21:27:27
 
Ward van der Put
Moderator

Ward van der Put

10/03/2014 22:25:46
Quote Anchor link
Je kunt zoeken naar een key die niet bestaat. Denk bijvoorbeeld aan een record-ID voor een klantnummer, een artikelnummer, enzovoort. Dat is dus niet per se een exception, maar vaak een normale en te verwachten toestand van een systeem.
 
Ozzie PHP

Ozzie PHP

10/03/2014 22:31:42
Quote Anchor link
Dat klopt Ward, maar er zijn ook situaties als deze denkbaar:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

$foo
= $config->get('foo');

?>

Hier ga ik er vanuit dat er een 'foo' key bestaat, maar blijkbaar heb ik me vergist, dus moet er een exception worden gegooid. Ik vraag me af welke exception ik dan moet gooien. Ik dacht dus om een InvalidArgumentException te gooien, omdat ik blijkbaar een argument he opgegeven van een ID/key die niet bestaat. Maar ik zou graag weten of dit een juiste keuze is.
 
Dos Moonen

Dos Moonen

10/03/2014 23:13:20
Quote Anchor link
"This represents errors that cannot be detected at compile time."

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php

function get($index, array $array) {

  if ($index < 0) {
    throw new OutOfBoundsException('index cannot be lower then zero');
  }

  if ($index >= count($array)) {
    throw new OutOfBoundsException('index has to be lower then the number of elements');
  }


  return array_values($array)[$index];
}


get((int) $_GET['index'], [42]);
get((int) $_GET['index'], [1, 1, 2, 3, 5, 8, 13]);

?>
Gewijzigd op 10/03/2014 23:14:54 door Dos Moonen
 
Ozzie PHP

Ozzie PHP

10/03/2014 23:20:16
Quote Anchor link
Hoi Dos,

Ik lees wat er staat, maar mijn technische kennis is nog niet zover dat ik het helemaal begrijp.

Wat wordt er bedoeld met "errors that cannot be detected at compile time"?

En als ik nu een niet bestaande key ingeef? Bijv. ik moet de key "Dos" hebben, maar ik typ in plaats daarvan per ongeluk "Dox". $dos = $config->get('Dox'). Die key bestaat niet. Welke exception moet er dan worden gegooid?
 
Dos Moonen

Dos Moonen

11/03/2014 07:10:47
Quote Anchor link
OutOfBoundsException is prima aangezien de compiler niet weet of 'Dox' op het moment dat die regel uitgevoerd wordt een valide key is. 'key' is wel toegestaan om als key te gebruiken, dus het is geen invalide argument wat de methode betreft.
 
Ozzie PHP

Ozzie PHP

11/03/2014 14:12:55
Quote Anchor link
Oké, ik snap wat je bedoelt Dos. Ik vind OutOfBoundsException alleen helemaal geen prettige naam (voor mezelf). Ik vind 'm te onduidelijk en te lastig om te onthouden.

Misschien kan ik er beter UnknownIdException van maken. Wat vind je daarvan?

Overigens vraag ik me iets af... dat geldt eigenlijk voor alle exceptions. Leg je de "schuld" neer bij de programmeur, of leg je de "schuld" neer bij de server?

Klinkt misschien een beetje vaag, dus ik zal uitleggen wat ik bedoel.

Stel je roept een bestand aan en dat bestand bestaat niet, zeg je dan in je exception message:

A: ("schuld" bij programmeur) je hebt een niet bestaand bestand "foo.php" aangeroepen

OF

B: ("schuld" bij server) kan het bestand "foo.php" niet vinden
 
D Vivendi

D Vivendi

11/03/2014 14:38:12
Quote Anchor link
Wat maakt het nou uit hoe je het zegt. Of je nu de schuld bij de programmeur of de server legt. Het gaat er om dat de boodschap duidelijk is.

Zelfde met excepties. OutOfBoundsException zegt dat er iets buiten de "grenzen" is gekomen. Dat duidt dus eerder op iets als een array. Je hebt keys van 1 tm/ 10 maar key 23 wordt opgevraagd. Dan stap je dus butien die "bounds" of "boundary" en gooi je die exceptie.

Als je voor dit verhaal niet goed weet welke je moet gebruiken van de bestaande, maak je zelf een Exception class aan die "ConfigurationPropertyNotFoundException" oid. Zolang het maar een indicatie geeft van wat er fout gaat is het goed. Zou hier ook echt niet te lang bij stil staan.
 
Ozzie PHP

Ozzie PHP

11/03/2014 14:44:07
Quote Anchor link
Okeej... ik sta er ook niet te lang bij stil. Maar je hebt soms van die dingen waar je pas achteraf achter komt dat je het beter op een andere/handigere manier had kunnen aanpakken. Vandaar dat ik graag wat extra visies ontvang.

Je kunt inderdaad zoiets gebruiken als ConfigurationPropertyNotFoundException, maar je moet er ook voor waken dat je dan weer niet 10 verschillende variaties daarop krijgt... ProductPropertyNotFoundException, UserPropertyNotFoundException enz. Daarom wil ik een zo algemene, maar toch zo specifiek als mogelijke, naam gebruiken voor overeenkomstige situaties.
 
Ward van der Put
Moderator

Ward van der Put

11/03/2014 15:07:19
Quote Anchor link
D Vivendi op 11/03/2014 14:38:12:
Wat maakt het nou uit hoe je het zegt. Of je nu de schuld bij de programmeur of de server legt. Het gaat er om dat de boodschap duidelijk is.

Het maakt niet veel maar wel iets uit. De LogicException en subklassen zoals de InvalidArgumentException tikken de developer bij tests op de vingers en mogen in productie niet meer voorkomen:

“Exception that represents error in the program logic. This kind of exceptions should directly lead to a fix in your code.”
 
D Vivendi

D Vivendi

11/03/2014 16:09:13
Quote Anchor link
Ward van der Put op 11/03/2014 15:07:19:
Het maakt niet veel maar wel iets uit. De LogicException en subklassen zoals de InvalidArgumentException tikken de developer bij tests op de vingers en mogen in productie niet meer voorkomen:

“Exception that represents error in the program logic. This kind of exceptions should directly lead to a fix in your code.”


Dan heb je het over de exception zelf. Ik had het alleen over het bericht zelf wat je bij de exceptie toont. Of je nu "foo.php bestaat niet" of "foo.php niet gevonden" zegt, dat maakt dan in weze niet echt veel verschil. Komt op het zelfde neer.
 
Reshad F

Reshad F

11/03/2014 18:12:17
Quote Anchor link
Je hebt compile time errors en runtime errors.

-compile time krijg je als je een rood streepje onder je code ziet wanneer je aan het coderen bent.
-run time krijg je wanneer je de applicatie runt en een fout naar je hoofd gegooid krijgt.

Overigens is het leuk en aardig dat je OutOfBoundsException geen leuke benaming vind maar let wel op.. dit is een algemene exception die bij veel programmeurs bekend is. wanneer jij allemaal custom errors terug gooit dan is het voor jou opvolger heel moeilijk om te achterhalen wat die fout is of waarom die error.

Als ik een OutOfBoundsException krijg dan weet ik dat het te maken heeft met het feit dat ik een array key aanroep die niet bestaat.
stel ik krijg UnknownIdException dan denk ik bij mezelf ohh nee weer een creatieve developer die zijn eigen errors namaakt.

In principe kan je de aangeleverde foutmeldingen gebruiken met een eigen stukje tekst voor de duidelijkheid zoals in Dos' voorbeeldje.
 
Ozzie PHP

Ozzie PHP

11/03/2014 18:21:56
Quote Anchor link
Thanks Reshad.

>> compile time krijg je als je een rood streepje onder je code ziet wanneer je aan het coderen bent.

Bedoel je daarmee bijv. dat ik een ; vergeet? Dat soort fouten kun je toch niet opvangen?

>> run time krijg je wanneer je de applicatie runt en een fout naar je hoofd gegooid krijgt.

Maar dan lijkt het me dat alle exceptions run time exceptions zijn. Of zeg ik nu iets geks?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

11/03/2014 18:43:03
Quote Anchor link
Alle script talen zijn intrepeters, en die runnen alleen wanneer je een script uitvoert.
Anders gezegd, je krijgt een compiler fout op het moment dat je een fout hebt in je code (bv haakje vergeten etc, etc.)
Runtime errors krijg je wanneer je bv een object vanuit je db probeert te halen maar dat dan de db niets terug geeft.
 
Ozzie PHP

Ozzie PHP

11/03/2014 19:14:28
Quote Anchor link
Kun je een compiler fout dan vergelijken met een spelfout?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

11/03/2014 19:44:32
Quote Anchor link
Ik weet niet precies wat je daarmee bedoelt.
Compiler errors ontstaan doordat je je ergens een ;, { etc. vergeet.

Maar tenzij je bootstrap en autoloaders geen fouten bevatten heb je in principe wel een runtime error.
 
Wouter J

Wouter J

11/03/2014 19:49:14
Quote Anchor link
Alle exceptions zijn runtime, alleen binnen runtime heb je ook weer verschil: Errors kunnen afhangen van de code alleen (LogicException) of kunnen worden beïnvloed door dingen buiten de code, bijv. een bestand dat verwijderd is, verkeerde user input, etc. (RuntimeException).
 
Ozzie PHP

Ozzie PHP

11/03/2014 19:51:33
Quote Anchor link
Ik bedoel dus dat een compile error een soort van "spelfout" is. We zijn ergens een komma of een punt vergeten tijdens het typen. Terwijl een runtime error een fout is die tijdens de uitvoer van een request plaatsvindt. Correct?
 
Wouter J

Wouter J

11/03/2014 20:06:54
Quote Anchor link
Een compile error is een syntax error.

Toevoeging op 11/03/2014 20:07:40:

Maar ook, als je een beetje goede compiler hebt, een niet bestaande method aanroepen of een niet bestaande variabele gebruiken.
 
Ozzie PHP

Ozzie PHP

11/03/2014 20:14:49
Quote Anchor link
>> Een compile error is een syntax error.

Dat is wat ik bedoelde met "spelfout" :-)

>> of een niet bestaande variabele gebruiken

Is dat ook een compile error? Dus eigenlijk is wat je zelf verkeerd intypt een compile error?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.