You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
try {
throw new \Exception('Expect to see error caught');
} catch (\Throwable $t) {
var_dump($t->getMessage());
}
But in your library...
$cmd = CMD::getInstance()->doNotTrapErrors();
try {
$cmd->option('r')
->require()
->aka('run')
->describedAs('When set, use this title to address the person');
} catch (\Throwable $t) {
var_dump('caught');
}
Never gets to that statement var_dump('caught');
Instead it just dumps out the error and dies...
PHP Fatal error: Uncaught Exception: Required option r must be specified in /var/www/nano/vendor/nategood/commando/src/Commando/Command.php:466
Stack trace:
#0 /var/www/nano/vendor/nategood/commando/src/Commando/Command.php(164): Commando\Command->parse()
#1 [internal function]: Commando\Command->__destruct()
#2 {main}
thrown in /var/www/nano/vendor/nategood/commando/src/Commando/Command.php on line 466
Fatal error: Uncaught Exception: Required option r must be specified in /var/www/nano/vendor/nategood/commando/src/Commando/Command.php on line 466
Exception: Required option r must be specified in /var/www/nano/vendor/nategood/commando/src/Commando/Command.php on line 466
Call Stack:
0.0237 585528 1. Commando\Command->__destruct() /var/www/nano/vendor/nategood/commando/src/Commando/Command.php:0
0.0237 585528 2. Commando\Command->parse() /var/www/nano/vendor/nategood/commando/src/Commando/Command.php:164
0.0239 589064 3. Commando\Command->error() /var/www/nano/vendor/nategood/commando/src/Commando/Command.php:498
Too add:
public function run(){
if (!$this->parsed) {
$this->parse();
}
}
public function __destruct()
{
if (!$this->parsed) {
$this->parse();
}
}
Created an identical function run(), when called (in sequence) the error is now caught properly. Is the a PHP issue whereby thrown \Exception after destruct? No idea...
try {
$cmd = CMD::getInstance()->doNotTrapErrors();
$cmd->option('r')
->require()
->aka('run')
->describedAs('When set, use this title to address the person')
->run();
} catch (\Throwable $t) {
var_dump('now gets here when run() is used');
}
PHP doc says: "Attempting to throw an exception from a destructor (called in the time of script termination) causes a fatal error."
So you cannot throw exception here. Of course You can, but dontcatch.
Right. If you don't explicitly run your Command, you can't catch the errors since validation wont happen until script termination. That is exactly how it works.
But in your library...
Never gets to that statement
var_dump('caught');
Instead it just dumps out the error and dies...
Too add:
Created an identical function run(), when called (in sequence) the error is now caught properly. Is the a PHP issue whereby thrown \Exception after destruct? No idea...
Fixed in #69
The text was updated successfully, but these errors were encountered: