$gen = (function () {
try {
yield 1;
} catch (Exception $e) {
echo $e->getMessage();
}
})();
$gen->throw(new Exception('gen throw exception'));
(PHP 5 >= 5.5.0, PHP 7, PHP 8)
Generator::throw — Wirft eine Exception in einen Generator
Wirft eine Exception in einem Generator und setzt die Ausführung des
Generators fort. Der Generator verhält sich dann so, als wäre der aktuelle
yield-Ausdruck durch eine throw $exception
-Anweisung
ersetzt worden.
Wenn der Generator beim Aufruf dieser Methode bereits geschlossen ist, wird die Exception stattdessen im Kontext des aufrufenden Codes geworfen.
exception
Die Exception, die in den Generator geworfen wird.
Gibt den gelieferten Wert zurück.
Beispiel #1 Eine Exception in einen Generator werfen
<?php
function gen() {
echo "Foo\n";
try {
yield;
} catch (Exception $e) {
echo "Exception: {$e->getMessage()}\n";
}
echo "Bar\n";
}
$gen = gen();
$gen->rewind();
$gen->throw(new Exception('Test'));
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Foo Exception: Test Bar
$gen = (function () {
try {
yield 1;
} catch (Exception $e) {
echo $e->getMessage();
}
})();
$gen->throw(new Exception('gen throw exception'));
$gen = (function () {
try {
yield 1;
} catch (Exception $e) {
echo $e->getMessage();
}
})();
$gen->throw(new Exception('gen throw exception'));
there have errors the form correct to do that is of this way:
function gen() {
echo "Foo\n";
try {
throw new Exception('Prueba');
} catch (Exception $e) {
echo "Excepción: {$e->getMessage()}\n";
}
echo "Bar\n";
}
gen();
i resolved one tecnic of how work getMessage look at it:
$myarray=array();
if($respuesta == "Mark"){
for($i=5;$i<=16;$i++){
try {
$palabra="soy la excepcion en la linea:".$i;
throw new Exception($palabra);
}
catch(Exception $e) {
$myarray[$e->getLine()] =$palabra;
if($e->getLine() == $i){
echo "<br><b>La excepción se creó en la línea : " .$e->getLine()."LA LINEA DICE:". $myarray[$e->getLine()]."</b>";
}//if
}//catch
}//for
}//if