expert vraagje mbt exceptions
Een vraagje voor de experts. Op het moment dat je een try/catch blok gebruikt, houdt PHP er dan rekening mee dat alle code binnen het try-blok een exception kan gooien? Wordt daar als het ware "real-time" op gemonitord d.m.v. een "listener" of iets dergelijks? Of wordt er pas op het moment dat er een exception wordt gegooid, gekeken of er een try-blok omheen staat?
Waarom ik dit vraag... stel ik heb 10 regels code. Binnen deze code kan nooit een exception worden gegooid. Als ik deze 10 regels nu toch binnen een try-blok heb staan en PHP gaat dan toch monitoren of er ergens een exception wordt gegooid (terwijl dat dus onmogelijk is) dan gaat dat onnodig ten koste van de performance. Maar als er niet wordt gemonitord, dan maakt het niet uit.
Iemand die dit weet toevallig?
Gewijzigd op 08/01/2014 22:20:43 door Ozzie PHP
micro-optimalisatie? Dacht dat je daar overheen was gegroeid...
Ozzie PHP op 08/01/2014 22:19:57:
Ola,
Waarom ik dit vraag... stel ik heb 10 regels code. Binnen deze code kan nooit een exception worden gegooid. Als ik deze 10 regels nu toch binnen een try-blok heb staan en PHP gaat dan toch monitoren of er ergens een exception wordt gegooid (terwijl dat dus onmogelijk is) dan gaat dat onnodig ten koste van de performance. Maar als er niet wordt gemonitord, dan maakt het niet uit.
Waarom ik dit vraag... stel ik heb 10 regels code. Binnen deze code kan nooit een exception worden gegooid. Als ik deze 10 regels nu toch binnen een try-blok heb staan en PHP gaat dan toch monitoren of er ergens een exception wordt gegooid (terwijl dat dus onmogelijk is) dan gaat dat onnodig ten koste van de performance. Maar als er niet wordt gemonitord, dan maakt het niet uit.
waarom er een try/catch om heen zetten als je het niet gebruikt.....
Dat is dus mijn vraag.
Soms is het duidelijker om zoiets te doen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
try {
// code waar geen exception kan worden gegooid
// code waar geen exception kan worden gegooid
// code waar exception kan worden gegooid
// code waar exception kan worden gegooid
// code waar geen exception kan worden gegooid
// code waar geen exception kan worden gegooid
// code waar exception kan worden gegooid
// code waar exception kan worden gegooid
} catch (Exception $e) {
}
?>
try {
// code waar geen exception kan worden gegooid
// code waar geen exception kan worden gegooid
// code waar exception kan worden gegooid
// code waar exception kan worden gegooid
// code waar geen exception kan worden gegooid
// code waar geen exception kan worden gegooid
// code waar exception kan worden gegooid
// code waar exception kan worden gegooid
} catch (Exception $e) {
}
?>
in plaats van dit
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
// code waar geen exception kan worden gegooid
// code waar geen exception kan worden gegooid
try {
// code waar exception kan worden gegooid
// code waar exception kan worden gegooid
} catch (Exception $e) {
}
// code waar geen exception kan worden gegooid
// code waar geen exception kan worden gegooid
try {
// code waar exception kan worden gegooid
// code waar exception kan worden gegooid
} catch (Exception $e) {
}
?>
// code waar geen exception kan worden gegooid
// code waar geen exception kan worden gegooid
try {
// code waar exception kan worden gegooid
// code waar exception kan worden gegooid
} catch (Exception $e) {
}
// code waar geen exception kan worden gegooid
// code waar geen exception kan worden gegooid
try {
// code waar exception kan worden gegooid
// code waar exception kan worden gegooid
} catch (Exception $e) {
}
?>
Optie 1 vind ik duidelijker, maar ik ben benieuwd of het een aanslag is op je performance, of dat het geen (noemenswaardig) verschil maakt.
@Wouter:
Zou je aub een keer willen stoppen met continue die micro-optimalisatie aan te halen. Ik word er een beetje moe van. Ik stel een vraag omdat ik wil weten hoe iets werkt en ik hoef dan niet iedere keer belerend te worden toegesproken. Het gaat mij erom of het wel of niet extra performance kost als je code die geen exception kan gooien toch binnen een try-blok zet. Wordt er dan gemonitord? Dat is mijn enige vraag.
Offtopic:
Excuses voor mijn "uitbrander". Kwam misschien wat harder over dan bedoeld.