tôi xử lý ngoại lệ trong một cách tương tự như eventHandling trong Javascript. Một sự kiện sẽ làm bong bóng các bậc thang từ cụ thể đến chung chung. Khi nó đạt đến chương trình bắt đầu, một ngoại lệ bị mất tất cả ý nghĩa của nó đối với mã và chỉ đơn giản là bị bắt để ghi nhật ký và kết thúc một ứng dụng.
Trong khi đó rất nhiều thứ có thể xảy ra
callstack:
- Bắt đầu trưa
- Ăn Apple (Trước khi mã này, một quả táo đã được mua như ăn trưa)
- răng Chìm trong apple
Trong khi ăn táo, một con giun xuất hiện:
throw NausiaException('I found a bleeding worm...');
Ăn phạm vi của Apple bắt
catch(Exception $e)
ngoại trừ bởi vì trong phạm vi mà chúng ta có thể trả lại táo đến cửa hàng và hét vào người quản lý. Vì không có gì hữu ích hơn có thể nói về sự xuất hiện,
throw $e
được gọi là vì ăn táo không thành công.
Something có thể đã đi khác nhau Tuy nhiên, nếu người quản lý cửa hàng từ chối hoàn lại tiền, bạn có thể quấn ngoại lệ
throw new RefundFailedException('The manager is a cheap skate', RefundFailedException::REFUSED, $e)
Bắt đầu ăn trưa Phạm vi Bắt đầu phạm vi trưa muốn ném trưa đi xấu
try {
//Start lunch
} catch (Exception $e) {
switch (true) {
case $e instanceof NausiaException:
case $e instanceof RefundFailedException:
//Throw lunch away
break;
}
}
Điểm chính là chuyển điều khiển sang bên ngoài 'bắt' sau khi chạy phần bên trong. Một 'return' sẽ bỏ qua nó hoàn toàn. – cHao