如何使用代码在laravel控制台命令中中止/退出/停止/终止

时间:2018-11-30 11:54:33

标签: php laravel laravel-5 command

假设我正在编写命令。在运行过程中如何完全停止运行?

示例:

public function handle()
{
    if (!$this->good_times) {
        $this->error('Bad times');
        $this->exit();
    }

    // continue command stuff
}

我尝试过:

throw new RuntimeException('Bad times');

但这会在终端中丢掉一堆丑陋的东西。

4 个答案:

答案 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');
}