[oop] InvalidArgumentException

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Embedded Software Developer

Functie omschrijving Ben jij een Embedded Software Developer die affiniteit heeft met de allernieuwste technieken? Voor een mooi softwarebedrijf in omgeving Gouda zijn wij op zoek naar een Embedded Software developer. Binnen deze rol houdt jij je bezig met alle werkzaamheden die nodig zijn om een functionaliteit te bouwen. Denk aan ontwerpen, architectuur, programmeren en algoritmes. Je voert test en validatie werkzaamheden uit bij de implementatie bij de klant. Ben jij enthousiast en een echte team player? Lees dan snel verder en laat wat van je horen! Bedrijfsprofiel Onze opdrachtgever bestaat uit een groot aantal creatieve en ambitieuze ontwikkelaars. Ze

Bekijk vacature »

.NET Developer

Functie omschrijving Jij gaat in de functie van Software Developer werken met C# en .NET framework. Jij gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Daarnaast optimaliseer je de bestaande software. Oplossingen waar de klant echt iets aan heeft, jij krijgt er energie van op dit te realiseren. Je gaat werken in een Microsoft omgeving(ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Bedrijfsprofiel Je komt te werken in een klein team van developers, die zich voornamelijk bezighouden met back-end development. Verder staat dit

Bekijk vacature »

Back end developer PHP

Functie Heb jij altijd al eens bij een bedrijf willen werken waar jij géén nummertje bent, die alleen maar uitvoerend werk doet? Dan zou je hier perfect passen! Tuurlijk, je werkt aan projecten voor grote of kleine bedrijven… Het enige verschil hier is, jouw mening telt hier écht. Jouw inbreng wordt gewaardeerd, serieus genomen en gebruikt. En vergeet niet, je werkt niet alleen aan deze projecten. Er werken in totaal ruim 25 developers en designers, onderverdeeld over 3 development teams. Voornamelijk bestaande uit Medior en Senior developers, die samen voor een inspirerende en ambitieuze omgeving zorgen. Hun visie is namelijk

Bekijk vacature »

Senior PHP developer/ Software Architect

Functie Momenteel zijn ze op zoek naar een ervaren PHP developer die zichzelf graag bezighoudt met zaken als architectuur en de algehele verbetering van structuren en standaarden. Het is eigenlijk meer operationeel als uitvoerend omdat je bezig gaat met zaken als het verder uitrollen en verbeteren van testautomatisering, codereviews, tickets en de doorloop hiervan en architectuurkeuzes. Mocht je hiernaast ook wat DevOps kennis meenemen is dit mooi meegenomen! Vanwege het kleine team maar de wereldwijde impact die zij leveren is er veel focus op kwaliteit. In deze functie werk je aan één van hun belangrijkste applicaties. Hierin werk je nauw

Bekijk vacature »

Fasttrack learning & development voor Java dev

Wat je gaat doen: Wij zoeken enthousiaste en ambitieuze junior en medior ontwikkelaars die toe zijn aan de volgende stap in hun carrière. Wij helpen je op je pad naar senior ontwikkelaar door ons fasttrack learning en development programma. Na een kort en intensief programma ga jij aan de slag bij klanten van DPA. Daarnaast krijg je veel ruimte om je te ontwikkelen als persoon en als specialist. De eerste maand gaan we aan de slag om je certificeringen te behalen waaronder OCP (Oracle Certified Professional). Daarnaast nemen we een deepdive in Spring Boot. Ook laten we je kennismaken met

Bekijk vacature »

BizTalk/ Azure Developer

Dit ga je doen •Understanding the scope of required functionality, translate them within context of way of working of the team into developed solutions, whilst safeguarding documentation; •Planning based on assigned sprint tasks; •Acting as an expert in estimation techniques and planning; •Understanding your role in the agile process and act in this way; •Facilitating internal communication and effective collaboration; •Working closely with scrum master to handle backlogs and new requests; •Providing information to the third parties about activities and needs for compliance. Hier ga je werken Our client is a leading organization focusing on animal nutrition, offering solutions that

Bekijk vacature »

SQL Developer

Functie omschrijving Altijd al willen werken bij een snelgroeiend bedrijf, actief in de logistieke sector? Dit is je kans! Ik ben op zoek naar een ervaren SQL Developer in de omgeving Tilburg. Dit bedrijf is gespecialiseerd in in de ontwikkeling van software en maatwerk oplossingen voor het automatiseren van logistieke processen. Klanten zijn o.a. BOL en andere grote distributiecentrums. Jouw taken worden vooral: Verantwoordelijk voor ontwikkelen van stored procedures, voor snelle afhandeling van data; Optimalisatie van de SQL query's en T-SQL query's; Jij gaat je bezig houden met ontwerpen, ontwikkelen en optimaliseren van de MS SQL Databases; In deze functie

Bekijk vacature »

Medior PHP Developer

Functie omschrijving We are looking for a dutch native speaker Wil jij als developer werken bij een interne organisatie en de eigen software verder helpen ontwikkelen? Lees dan snel verder! In deze functie ga je werken als PHP Developer en de interne software en applicaties verder ontwikkelen. In het kort houdt dit in: Je gaat de interne applicaties en software verder optimaliseren. Verder bouw je verschillende API's en koppelingen tussen systemen. Je gaat het CRM-systeem door middel van PHP verder ontwikkelen. Ook ga je collega's ondersteunen bij vragen over de software en applicaties. Bedrijfsprofiel Dit bedrijf is actief in het

Bekijk vacature »

.NET Developer

Dit ga je doen Programmeren in .NET, Javascript & C# en ontwikkelen in Web Services, Windows Services en MS SQL Server; Zelfstandig verbanden maken Analyseren, testen, bugs fixen, reviewen en rapporteren; Juiste prioriteiten stellen en verantwoordelijkheid nemen; Op architectuur niveau meedenken; Af en toe klanten bezoeken. Hier ga je werken Voor onze relatie zijn wij opzoek naar een .NET ontwikkelaar met minimaal 3 jaar werkervaring. Je komt te werken in een groeiend bedrijf met betrokken collega's die zorgen voor een familiaire sfeer op de werkvloer. Als .NET ontwikkelaar word jij vanaf de eerste werkdag betrokken bij het gehele ontwikkelproces. De

Bekijk vacature »

Full-stack developer

Als Full-stack developer bij KUBUS houd je je bezig met het ontwikkelen van de (web)applicatie en services van BIMcollab. Samen met je SCRUM team werk je aan zowel de front- als de back-end. Als softwarebedrijf bevindt KUBUS zich in een unieke positie. We bouwen aan onze eigen producten die wereldwijd door tienduizenden gebruikers worden gebruikt. Ons bedrijf heeft precies de juiste grootte: groot genoeg om echt impact te maken in de markt, maar klein genoeg om als individuele ontwikkelaar invloed uit te kunnen oefenen en echt het verschil te kunnen maken. Ons ontwikkelteam bestaat uit ruim 40 ontwikkelaars, testers, scrum

Bekijk vacature »

Developer Front-end

Functie omschrijving Front-end Developer gezocht! Wij zijn op zoek naar een front-end developer voor een organisatie in de regio Veenendaal die de eindverantwoordelijkheid op zich neemt van alles wat met design te maken heeft. Je hebt in deze functie een adviserende rol hiervoor moet je beschikken over een grote dosis vakinhoudelijke kennis. Je creëert unieke concepten door samen met collega’s en klanten te overleggen over aangeleverde designs. Hiermee draag jij je steentje bij aan de groeiambities van de klant. Jij wordt het vaste aanspreekpunt voor klanten wanneer het gaat over planningen, hierin is het jouw taak om alle betrokkenen goed

Bekijk vacature »

Softwareontwikkelaar Cleopatra

Functieomschrijving Voor de gemeente Amsterdam zijn wij op zoek naar een softwareontwikkelaar Cleopatra. De directie Verkeer en Openbare ruimte van de gemeente Amsterdam beschikt over een softwareapplicatie, "Cleopatra", waarmee geautomatiseerde handhaving plaatsvindt (op basis van kentekenherkenning) van bepaalde gebieden waarin toegangseisen worden gesteld aan het verkeer. Voorbeelden ervan zijn de milieuzones, de zone zwaar verkeer, handhaving van brom- en snorfietser op het fietspad en autoluwe gebieden. Voor de doorontwikkeling en uitbreiding ervan zijn gespecialiseerde softwareontwikkelaars nodig die helpen bij het programmeren van de handhavingsmodules voor nieuwe gebieden en het verbeteren en bijwerken van de bestaande onderdelen van de softwareapplicatie. Functie

Bekijk vacature »

Front-end (Angular) developer

Functie Om bovenstaande ambities waar te kunnen maken zijn ze op zoek naar een Front-end (Angular) developer. Het it-team bestaat momenteel uit de IT Manager, 2 back-end developers, 1 fullstack developer, 1 designer en een DevOps engineer. Ze zijn dus op zoek naar professionals die autonoom en gedisciplineerd aan de slag gaan, en bij aanvang als enige developer met hun Front-end applicaties aan de slag gaat. Wel hebben ze de ambitie om hier snel een 2e developer bij te vinden die jij dan ook zal kunnen aansturen/begeleiden. Je zult aan de slag gaan met het doorontwikkelen van hun bestaande UI

Bekijk vacature »

PHP ontwikkelaar

Functie Met een complex en uitgebreid e-commerce platform, een eigen PIM-systeem en eigen scan applicatie – krijg jij dagelijks te zien hoe jouw werk gebruikt wordt door miljoenen gebruikers. En we staan qua development pas in de startblokken, aangezien er nog meerdere projecten op de plank liggen te wachten! Ons huidige development team bestaat uit 8 programmeurs. Er wordt dagelijks gereflecteerd op geschreven code, Scrum taken en kennisdelen onderling is een must. Onze voertaal binnen ons team is Engels, dit omdat wij twee internationale collega’s hebben. Ons huidige “IT Landschap” bestaat voornamelijk uit allerlei losse onderdelen die individueel, maar ook

Bekijk vacature »

Magento developer

Functie E-commerce is een ‘’snelle’’ wereld. Om hierin continu voorop te blijven omarmen ze in een vroeg stadium nieuwe technieken. Een webshop is nooit af en kan altijd beter, sneller en efficiënter. Tegelijkertijd hebben ze vanaf hun oprichting altijd vastgehouden aan kwaliteit boven snelheid, en dit loont. Als back-end developer fungeer je als het verlengstuk van hun klanten. Technisch complexe zaken pak je met liefde op, en hierin werk je samen met o.a. front-end developers en designers. Klanten verwacht hierin kwaliteit van het hoogste niveau en een proactieve, meedenkende rol bij het maken van zowel technische als strategische keuzes. Ga

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

24/11/2024 22:16:50
 
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.