假设我正在编写命令。在运行过程中如何完全停止运行?
示例:
public function handle()
{
if (!$this->good_times) {
$this->error('Bad times');
$this->exit();
}
// continue command stuff
}
我尝试过:
throw new RuntimeException('Bad times');
但这会在终端中丢掉一堆丑陋的东西。
答案 0 :(得分:1)
也遇到了这个问题。
只需创建一个实现ExceptionInterface
的异常即可。
use Exception;
use Symfony\Component\Console\Exception\ExceptionInterface;
class ConsoleException extends Exception implements ExceptionInterface
{
}
现在当您引发错误时:
throw new ConsoleException('Bad times');
在没有堆栈跟踪的情况下得到错误。
答案 1 :(得分:0)
尝试那样使用
public function handle()
{
try {
if(!isset($x)){
throw new \Exception('not found');
}
}catch(\Exception $e){
exit($e->getMessage());
}
$this->info("test here");
}
答案 2 :(得分:0)
只需使用 return
语句,而不抛出异常。喜欢...
public function handle()
{
if (!$this->good_times) {
$this->error('Bad times');
// $this->exit();
// throw new RuntimeException('Bad times');
return;
}
// ...
}
答案 3 :(得分:0)
private function foo()
{
if (/* exception trigger condition */) {
throw new \Exception('Exception message');
}
// ...
}
public function handle()
{
try{
$this->foo();
} catch (\Exception $error){
$this->error('An error occurred: ' . $error->getMessage());
return;
}
$this->comment('All done');
}