2015-07-06 16 views
10

Mã sau đây ném một ngoại lệ mà tôi không thể bắt vì bất kỳ lý do gì.Không thể bắt ngoại lệ do Carbon

try { 
    $this->date = \Carbon\Carbon::parse($this->date)->toDateString(); 
} 
catch (Exception $err) { 
    $this->date = \Carbon\Carbon::parse("January 1st 1900")->toDateString(); 
} 

Bây giờ, nếu tôi đặt điều này trong các tệp tuyến đường của tôi trong chức năng đóng, nó hoạt động tốt. Nó chỉ ném một ngoại lệ khi nó được gọi từ Model.

exception 'Exception' with message 'DateTime::__construct(): Failed to parse time string (Summer 2015) at position 0 (S): The timezone could not be found in the database' in /home/vagrant/www/steamcompare/vendor/nesbot/carbon/src/Carbon/Carbon.php:222

Có ai khác có vấn đề này với Carbon?

Trả lời

28

Ngay sau khi đặt câu hỏi, tôi đã nghĩ ra câu trả lời. Vì tôi thấy rất nhiều bài đăng trực tuyến về một vấn đề rất giống nhau, tôi đã hình dung rằng tôi sẽ tiếp tục và trả lời câu hỏi này.

Sự cố là không gian tên. Carbon đang chạy trong một không gian tên khác nhau từ ứng dụng của tôi (hiển nhiên) vì vậy khi tôi cố gắng catch (Exception) Tôi đã thực sự cố gắng để nắm bắt một ngoại lệ trong không gian tên của ứng dụng của tôi. Thay đổi tuyên bố khai thác thành catch (\Exception) đã giải quyết.

Tôi hy vọng điều này sẽ giúp mọi người kết thúc trên trang này.

+3

Bạn nên đánh dấu câu trả lời là câu trả lời chính xác trong khi bạn ở đây trả lời câu hỏi của bạn :) – alexrussell

+2

Tôi sẽ, khi bộ tính giờ SO đặt câu hỏi biến mất. – Nathan

+2

Ahh xin lỗi đã không nhận ra có một. – alexrussell

Các vấn đề liên quan