Exceptions gebruiken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior Front-end developer Consultancy

Functie Als front-end developer ga je aan de slag voor verschillende klanten, waarbij veel rekening wordt gehouden met waar je woont (dit is altijd binnen het uur), en word er gezocht naar een organisatie die past bij jou. Zowel qua persoonlijke ambities als de technische aansluiting. De opdrachten duren gemiddeld 1 à 2 jaar maar dit hangt ook af van je wensen. Je werkt in een teamverband voor een klant en zult nauw samenwerken met zowel eigen collega’s als die bij de klant werkzaam zijn. Ze zijn op zoek naar een technische front-end developer die ruime ervaring heeft in één

Bekijk vacature »

C#.NET Developer Jr. Functie

Functie omschrijving Bouw jij graag aan applicaties om processen in distributiecentra te optimaliseren? Wij zijn op zoek naar een C#.NET ontwikkelaar in regio Breda die hier graag een steentje aan bijdraagt! Jouw werkzaamheden zullen er als volgt uitzien: Je krijgt veel vrijheid in de keuze van de technieken die je gaat gebruiken. Uiteraard wel binnen de gestelde kaders, en door gebruik te maken van het .NET platform. Je gaat aan de slag met de ontwikkeling van een nieuwe module binnen de WMS suite van dit bedrijf. Deze "carrier" module gaat er voor zorgen dat de selectie van een vervoerder volledig

Bekijk vacature »

Front end developer Zorgplatform

Functie Jij als Front end ontwikkelen zult komen te werken samen met 1 PHP ontwikkelaar, 1 Python developer en een flexibele schil aan ontwikkelaars . Samen ga je ervoor zorgen dat de huidige producten doorontwikkeld worden. De Marketplace is geschreven in PHP Laravel en in de front end React. De roostersoftware is ontwikkeld in Python in combinatie met React in de front end. Jij zult als Front ender dus voornamelijk bezig zijn met het verbeteren van onze interfaces op onze verschillende producten. Momenteel ligt de uitdaging in het feit dat de roostersoftware breder schaalbaar moet worden zodat het voor meerdere

Bekijk vacature »

Embedded Developer C++

Functie omschrijving Ben jij op zoek naar een leuke uitdaging als Embedded Developer, zoek dan niet verder! Voor een leuke opdrachtgever in omgeving Rotterdam zijn wij op zoek naar een Embedded Developer die graag met Embedded Devices werkt. Je zult verantwoordelijk worden voor het ontwikkelen en onderhouden van diverse producten. Jouw specialisatie ligt op het vlak van software, hardware en back-end. Dit bedrijf is gespecialiseerd in het ontwerpen van software voor een unieke industrie. Wil jij betrokken worden bij een proces dat loopt van ontwikkeling tot installatie? Waarbij je bezig zult zijn met perfecte systemen die geleverd worden aan binnen

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET Developer start jij in een team met 15 developers. In het team is er genoeg senioriteit om ervoor te zorgen dat jij de juiste begeleiding krijgt. Jij begint als eerst alle software pakketten en processen eigen te maken. Vervolgens ga jij deze software programmeren, onderhouden en testen. Ook ga jij research doen naar nieuwe mogelijkheden en zoek jij uit hoe je dit kan implementeren. Jullie werken intern op project basis en afhankelijk van het project werken jullie wel of niet iedere ochtend met een standup. Je gaat als Full stack developer aan de slag en gaat

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: 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 je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: 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 je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Full stack .NET developer Microsoft 365

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

PHP Developer

Functie omschrijving Voor een bedrijf in Den Bosch zoek ik een PHP Developer, die al wat werkervaring heeft. Jij gaat aan de slag met de verdere professionalisering van de interne applicaties en software. In de functie ga je verder: Verdere ontwikkeling eigen CRM systeem, vooral middels PHP; Bouwen van verschillende API's & koppelingen; Meedenken om de software/applicaties te verbeteren/optimaliseren; Aan de slag met de interne tooling. Bedrijfsprofiel Dit bedrijf is actief binnen de telecombranche. Het hoofdkantoor zit in regio van Den Bosch en er werken ruim 70 medewerkers, verdeeld over verschillende afdelingen. De afdeling Development bestaat uit vijf collega's, onder

Bekijk vacature »

Senior C# Software Ontwikkelaar te Zaandam

Bedrijfsomschrijving Deze werkgever heeft als missie om haar klanten op ICT-gebied volledig te ontzorgen. Ze zijn een ICT bedrijf met een verscheidenheid aan ICT oplossingen waaronder Cloud oplossingen en een groot deel van het werk is gericht op software realisatie. Voor de Enterprise-klanten voert het relatief kleine ontwikkelteam waar jij deel uit van kan gaan maken binnen deze organisatie te Zaandam de grootste opdrachten uit. Niet alleen websites en complexe webapplicaties maar ook mobile apps, web services en complete systeemintegraties! Je moet dan denken aan Dynamics, Sharepoint en Salesforce. Je komt hier terecht in een relatief kleine organisatie met ontzettend

Bekijk vacature »

.NET Developer

Dit ga je doen Tot jouw takenpakket behoort onder andere: Webapplicaties ontwerpen, bouwen, testen en implementeren in .NET/C#.; Ontwikkelen, implementeren en beheren van maatwerkapplicaties; Onderhouden en beheren van standaardpakketten; Onderzoeken en beoordelen van nieuwe technieken. Hier ga je werken Als .NET ontwikkelaar kom je te werken bij een grote semioverheidsinstelling in Nijmegen. De organisatie staat garant voor het leveren van onderwijs en les- en onderzoeksmateriaal voor duizenden betrokkenen. De organisatie wil bijdragen aan een gezonde, vrije wereld met gelijke kansen voor iedereen. Binnen de teams hangt een open en collegiale cultuur met veel aandacht voor een prettige en sociale werksfeer.

Bekijk vacature »

Grafisch vormgever

Standplaats: Maasland Aantal uren: 32 – 40 uur per week Opleidingsniveau: HBO werk- en denkniveau Ben jij een ambitieuze grafisch vormgever met een passie voor creativiteit en oog voor detail? Vind jij het daarnaast leuk om ook marketingactiviteiten op te pakken? Dan zijn wij op zoek naar jou! Bedrijfsinformatie Westacc Group BV is het zusterbedrijf van HABA en specialiseert zich in (maatwerk) oplossingen voor (elektro) techniek en verlichting in de kampeerbranche. Zij produceren en assembleren onderdelen voor caravans, campers en boten. Voor een groot aantal caravan- en campermerken leveren wij producten als zekeringkasten, invoerdozen, acculaders, schakelmateriaal en verlichting. De producten

Bekijk vacature »

Junior PHP Developer

Functieomschrijving Junior PHP Developer gezocht! Voor een opdrachtgever in de regio Gelderland zijn wij op zoek naar een Junior PHP Developer die onderdeel gaat worden van het ontwikkelingsteam van deze organisatie. In deze functie ga jij aan de slag met het schrijven van software voor de aansturing van en het managen van windparken en bijbehorende onderdelen. Hiernaast ga jij je bezighouden met het ontwikkelen, testen en onderhouden van diverse webapplicaties. Het team waarin je komt te werken bestaat uit 3 developers, hierdoor krijg je veel verantwoordelijkheid en de kans om jezelf verder te ontwikkelen. Er wordt echter wel van je

Bekijk vacature »

Java developer - procesoptimalisatie (Inhouse)

Functie Wat ga je doen als Java developer? Jij als back end developer hebt al enige ervaring opgedaan in jouw vakgebied. Voornamelijk het werken met Java en Spring spreekt jou aan. Jij wordt samen met je collega developers in het team verantwoordelijk voor de gehele back end van de applicatie. Hierdoor heb jij veel zelfstandigheid in je rol en zul je ook zelf beslissingen samen met de PO maken. Er wordt gewerkt volgens de SCRUM methodiek, om zo structuur te creëren in de werkzaamheden. Binnen de 2-wekelijkse sprints pak jij je taken op die samen met de PO afgestemd zijn.

Bekijk vacature »

Node.js developer

Functie Onder begeleiding van 3 accountmanagers waarvan er 1 binnen jouw expertise je aanspreekpunt zal zijn ga je aan de slag bij diverse opdrachtgevers. Hij of zij helpt je bij het vinden van een passende en uitdagende opdracht. Hierin houden ze uiteraard rekening met jouw situatie, ervaring en (technische) ambities. De opdrachten duren gemiddeld één tot 2 jaar. Hierdoor kun je je ook echt vastbijten in een project en als consultant impact maken. Naast de opdracht ben je regelmatig met je collega’s van de IT-afdeling om bijvoorbeeld onderlinge kennis te delen, of nieuwe trends te bespreken. Ook worden er regelmatig

Bekijk vacature »
Thijs X

Thijs X

31/12/2007 16:18:00
Quote Anchor link
Hallo allemaal,

Weer een vraagje over het gebruik van Exceptions, doe het nu alvolgt?
Is het niet overbodig om van elke publieke methode ( functie ) alle invoer te controleren dmv Exceptions?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
    public function __construct( $sTitel ) {
           try {
             if( empty($sTitel) || !is_string($sTitel) ) {
                 throw new Exception( 'Niet alle parameters zijn correct ingevuld' );
             }

            $this->sTitel = $sTitel;
           }

               catch( Exception $e ) {
                   die( $e->getMessage() );
              }
         }

?>
Gewijzigd op 01/01/1970 01:00:00 door Thijs X
 
PHP hulp

PHP hulp

03/12/2024 20:28:44
 
- -

- -

31/12/2007 16:21:00
Quote Anchor link
Volgens mij is het zo prima. Alleen vraag ik me af of die() zo'n goed idee is; exceptions zijn juist zodat je geen die() of exit meer hoeft te gebruiken.
Edit:
Niet goed gekeken.

Volgens mij hoort het zo:
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
19
20
21
22
23
<?php
    class Test
    {
        public function __construct($sNaam)
        {

            if (empty($sNaam) || !is_string($sNaam))
            {

                throw new Exception('Parameters zijn onjuist.');
            }

            // doe je ding
        }
    }

    
    try
    {
        $oTest = new Test(123);
        // doe je ding met $oTest
    }
    catch (Exception $e)
    {

        echo '<p class="error"><strong>Error:</strong><br />' . $e->getMessage . '</p>';
    }

?>
Gewijzigd op 01/01/1970 01:00:00 door - -
 
Thijs X

Thijs X

31/12/2007 16:23:00
Quote Anchor link
Ja ben bezig met een Formulier klasse, en heb de die() wel nodig anders word het formulier alsnog half geprint met de onderdelen die wel goed zijn ingvuld.
 
Jelmer -

Jelmer -

31/12/2007 16:25:00
Quote Anchor link
mag je zelf weten. In sommige situaties is het handig omdat anderen gebruik maken van jouw klassen, en zo gedetailleerde foutmeldingen kunnen ontvangen. Sommigen gebruiken deze controle om meteen de invoer van bijvoorbeeld formulieren te controleren. Sommigen houden van de extra zekerheid die het met zich mee brengt. En sommigen doen het gewoon niet.

Maar het maakt debuggen van (anders niet gevonden fouten) echt zoveel sneller, dat ik het toch erg sterk kan aanraden.
 
Thijs X

Thijs X

31/12/2007 16:45:00
Quote Anchor link
Bedankt voor julllie reacties, ik ga de fouthandeling wel in de classe zelf verwerken omdat het idd ook voor andere mensen makkelijk bruikbaar moet zijn. Als hij af is post ik hem misschien hie rwel op PHPhulp
 
Jelmer -

Jelmer -

31/12/2007 16:55:00
Quote Anchor link
De fout-opmerking in de klasse zelf. Het afhandelen (een alternatieve route verzinnen, die() is daar (niet?) een van) is niet de taak van je klasse over het algemeen. Dus alleen throw. Catch hoef je binnen een klasse zelden te gebruiken. Tenzij je natuurlijk een fout op dat moment kan afhandelen, dus een alternatief kan bieden.
 
Thijs X

Thijs X

31/12/2007 17:01:00
Quote Anchor link
Maar als ik een formulie wil gaan aanmaken met mn klasse en ik vul verkeerde parameters in, dan wil ik natuurlijk niet dat het formulier wel word weergegeven, dan wil ik een nette error.
 
Jelmer -

Jelmer -

31/12/2007 17:04:00
Quote Anchor link
Jep, dus op die plek waar je die fout gaat weergeven, of beter gezegd, de exception verwacht en omzet naar een bericht, daar pas komt het catch-statement.

Of simpeler gezegd: op de plek waar je het meeste op kan vangen en toch nog wat nuttigs er mee kan doen, en dus uiteindelijk het minste try-blokken (het mooiste is natuurlijk om maar 1 enkel try-blok nodig te hebben) nodig hebt.
 
Thijs X

Thijs X

31/12/2007 17:07:00
Quote Anchor link
Hmm dus beste manier om wel de exceptions te throwen in mn klasse,
maar pas een try/catch te gebruiken als ik een nieuw formulier aanmaak?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
try {
$form = new Formulier();
$form->doedit();
$form->doedat();
}

catch( Exception $e ) {
// error
}
?>
 
Jelmer -

Jelmer -

31/12/2007 17:18:00
Quote Anchor link
Je hebt verschillende soorten exceptions. Je hebt bijvoorbeeld de InvalidArgumentException en de BadMethodCallException. Dezen zou ik bijvoorbeeld niet opvangen in je catch-blok in je formulier-generator, want je formulier weet daar geen raad mee.

Echter, als je het hebt over een formulier genereren, dan neem ik aan dat je er ook een soort van controle inbakt die de opgestuurde waarden controleert. De vraag is, wil je hier wel exceptions voor gebruiken? Het lijkt mij handiger om hier gewoon boolean waarden voor te gebruiken bij de controle ($this->field->isValid($waarde)) en om eerlijk te zijn kan ik zo ook niet een situatie bedenken waarin je werkelijk een try/catch-blok nodig zal hebben in je formulier-klasse zelf.
 
Andreas Warnaar

Andreas Warnaar

06/05/2008 19:24:00
Quote Anchor link
@Jelmer..
Als ik het goed begrijp dan gebruik je dus geen exceptions in een klasse?

Ik gebruik nu catch in mijn construtor bij het aan maken van een object.. is dat wel volgens de regels of moet ik deze catch pas toepassen als ik het alle objecten aan maak?

Hopelijk snap je een beetje wat ik bedoel..
Onderstaande code is van mijn lijst klassen die een ftp object aan maakt..

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
19
20
21
22
23
24
25
<?php
    function __construct($p_SubDir=''){
        try{
            if ($this->m_SourceType == 'ftp'){
                if(!empty($this->m_FtpHost) AND !empty($this->m_FtpUserName) AND !empty($this->m_FtpUserPass)){
                    $this->obj_FTP = new clsFtp($this->m_FtpHost,$this->m_FtpUserName,$this->m_FtpUserPass);
                    if(!empty($p_SubDir) AND $p_SubDir != '' ){
                        $this->obj_FTP->setCurrentDir($this->m_FtpDocRoot . $p_SubDir);
                    }
else{
                        $this->obj_FTP->setCurrentDir($this->m_FtpDocRoot);
                    }
                }
else{
                    throw new constructException('Ftp hostname or credentials are missing');
                }
            }
elseif($this->m_SourceType == 'http' ){
            return $this->m_HttpRootPath;
        }
else{
            throw new constructException('No Source type has been set!');
        }
        }
catch (constructException $e){
            print $e->Report();
            exit;
        }
    }
// End fucntion __construct()
?>
Gewijzigd op 01/01/1970 01:00:00 door Andreas Warnaar
 
Jelmer -

Jelmer -

08/05/2008 00:15:00
Quote Anchor link
Zoals ik waarschijnlijk al eerder hier heb gepost: vang een exception pas op wanneer je een alternatieve route voor de flow van je programma kan bieden.

Stel dat je een (stel) klasse hebt die data beheert met behulp van een database die hij zelf onderhoudt. Nu wil je een klompje data opslaan, en de klasse probeert een insert uit te voeren. Dus je past een eigenschap aan, en roept indirect __set aan. __set roept een updateDatabase-method aan. Bummer! Tabel bestaat niet, en er wordt een exception gegooid door PDO. updateDatabase kan niets met die exception, want updateDatabase is slechts verantwoordelijk voor het bijwerken van de database, niet voor het aanmaken. __set weet echter wel raad met het probleem, en vangt de exception op - in dit geval de PDOException - en roept de createDatabase method aan, waarna hij alsnog de updateDatabase method een keer probeert. Stel nu dat je __set een array meegeeft terwijl je property een string als type verwacht. __set bemoeit zich daar vandaag niet zo mee, updateDatabase controleert daar wel op en gooit een InvalidArgumentException. Tja, __set weet niet wat hij met zo'n exception moet. PDOExceptions kan hij deels goed afhandelen, maar deze weet hij geen raadt mee en vangt hij dus ook niet op.

Moraal van het verhaal: Exceptions vang je pas op wanneer je een alternatief hebt. Anders laat je ze verder vallen.


Dus, in jouw code zet je wel de throw, maar niet de catch. print $e->report & exit zijn niet een alternatief - het is niet aan de klasse om foutmeldingen te printen of de applicatie te stoppen, dat is aan de applicatie zelf. Klassen zijn niets meer dan een hulpmiddel en moeten zich niet met andere zaken bemoeien. Dus je zet je try-catch statement om het aanmaken van de instantie heen, en niet binnen de constructor.

Verder vind ik de eigen exception niet zo netjes. constructException zegt niets over de oorzaak van het probleem, maar alleen waar het probleem is opgetreden. Dat kan je ook wel zien aan de getLine() en getFile() methods van de exception. Je hebt daar echter niet veel aan bij het opvangen. Uit mijn vorige voorbeeld: een updateDatabaseException die gegooid is omdat de database niet bereikbaar is is toch degelijk anders dan een updateDatabaseException omdat de up te daten data niet geldig is. Voor beiden is een andere oplossing, dus voor beiden kan je een ander catch-blok gebruiken. Maar een catch-blok maakt onderscheidt tussen exceptions op basis van hun klasse, en die is hetzelfde. Dus moet je in je catch-blok nu op iets anders gaan controleren.

Probeer je in eerste instantie te beperken tot de exceptions die SPL meebrengt: http://devzone.zend.com/article/2565-The-Standard-PHP-Library-SPL#table1. Ik heb zelden een eigen exception nodig, bijna alle mogelijke "fouten" zijn op te delen in deze 6 exceptions.

Overigens, in je constructor doe je iets op basis van de eigenschap m_SourceType**, alsof hij voordat __construct aangeroepen wordt handmatig geset kan worden. Wel, helaas, bij mijn weten wordt zodra je een object aanmaakt als eerst de constructor aangeroepen, met uitzonderen van FETCH_OBJ i.c.m. PDO. Hetzelfde voor de username & password. Ow, en return in een constructor heeft geen zin, de constructor zal altijd de instantie zelf teruggeven. Tenzij je hem natuurlijk als static method aanroept, maar dan krijg je weer gezeur over dat $this niet bestaat.

** Waarom ingodsnaam die m_ ervoor, als er $this-> voor staat is het toch hoe dan ook een member-variabele, domme Hongaarse notatie...
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
 
Andreas Warnaar

Andreas Warnaar

14/05/2008 20:36:00
Quote Anchor link
-
Gewijzigd op 01/01/1970 01:00:00 door Andreas Warnaar
 
Andreas Warnaar

Andreas Warnaar

17/05/2008 19:44:00
Quote Anchor link
-
 



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.