2016-05-23 56 views
0

因此,我有一個命令(1)調用另一個命令(1)(命令1和命令2從此處開始)。但是,如果命令2引發異常,由於某種原因它不能被命令1捕獲。Laravel 5.2 - 處理在命令中調用的命令的例外

有誰知道如何處理「command-ception」上的異常?

這裏是我的代碼:

public function handle() 
{ 
    $this->client = $this->argument('client'); 

    try { 
     // Create database 
     $this->createClientDatabase(); 

     $this->call('migrate', [ 
      '--database' => $this->client, 
      '--path' => 'database/migrations/aca', 
     ]); 

     // Import the information into the tables 

    } catch (Exception $e) { 
     $this->dropClientDatabase(); 
    } 
} 

爲了澄清,我創建了一個數據庫和動態連接,但如果事情上的遷移調用失敗,我結束了一個空數據庫,沒有辦法趕上錯誤。如果在$this->call()內發生了什麼,它就會死亡,並且不會繼續處理命令1.

+0

可以共享這兩個命令處理文件的基本結構 –

+0

migrate只是laravel的內置命令 –

+0

其餘命令只是實現細節,並不涉及我的問題。 –

回答

0

所以問題是默認命名空間。在使用名稱空間或至少放置使用語句(use Exception;)時,需要在Exception之前加上反斜槓,如\Exception

因爲我沒有這樣做,所以它在我當前的命名空間中尋找一個Exception類,因此沒有捕獲任何東西。