Hướng dẫn php catch (throwable vs exception) - bắt php (có thể ném so với ngoại lệ)

414

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Đôi khi, tôi thấy

try {

} catch(Throwable e) {

}

Và đôi khi

try {

} catch(Exception e) {

}

Sự khác biệt là gì?

Hướng dẫn php catch (throwable vs exception) - bắt php (có thể ném so với ngoại lệ)

Nubok

3.3126 Huy hiệu vàng25 Huy hiệu bạc46 Huy hiệu đồng6 gold badges25 silver badges46 bronze badges

hỏi ngày 16 tháng 2 năm 2010 lúc 15:49Feb 16, 2010 at 15:49

1

Bằng cách bắt Throwable, nó bao gồm những thứ mà lớp con Error. Nói chung, bạn không nên làm điều đó, ngoại trừ có lẽ ở cấp độ "bắt tất cả" cao nhất của một chủ đề mà bạn muốn đăng nhập hoặc xử lý hoàn toàn mọi thứ có thể sai. Nó sẽ là điển hình hơn trong một ứng dụng loại khung (ví dụ: máy chủ ứng dụng hoặc khung thử nghiệm) trong đó nó có thể chạy mã không xác định và không nên bị ảnh hưởng bởi bất cứ điều gì sai với mã đó, càng nhiều càng tốt.

Đã trả lời ngày 16 tháng 2 năm 2010 lúc 15:50Feb 16, 2010 at 15:50

YishaiyishaiYishai

88.9K31 Huy hiệu vàng186 Huy hiệu bạc257 Huy hiệu Đồng31 gold badges186 silver badges257 bronze badges

5

Cái đầu tiên bắt được tất cả các lớp con của Throwable (bao gồm ExceptionError), cái thứ hai bắt tất cả các lớp con của Exception.

Error không thể giải quyết được theo chương trình theo bất kỳ cách nào và thường không bị bắt, ngoại trừ mục đích ghi nhật ký (truyền lại một lần nữa). Exception có thể phục hồi theo chương trình. Lớp con của nó

try {

} catch(Exception e) {

}
0 cho thấy lỗi lập trình và thường không bị bắt.

Đã trả lời ngày 16 tháng 2 năm 2010 lúc 15:52Feb 16, 2010 at 15:52

BaluscbaluscBalusC

1.1M366 Huy hiệu vàng3573 Huy hiệu bạc3523 Huy hiệu đồng366 gold badges3573 silver badges3523 bronze badges

3

Throwable là siêu lớp của Exception cũng như Error. Trong trường hợp bình thường, chúng ta phải luôn luôn bắt được các lớp con của Exception, do đó nguyên nhân gốc không bị mất.

Chỉ có những trường hợp đặc biệt mà bạn thấy khả năng của những điều xảy ra sai mà không kiểm soát được mã Java của bạn, bạn nên bắt Error hoặc Throwable.

Tôi nhớ việc bắt được có thể ném được để gắn cờ rằng một thư viện gốc không được tải.

Hướng dẫn php catch (throwable vs exception) - bắt php (có thể ném so với ngoại lệ)

Sai Kishore

3241 Huy hiệu vàng9 Huy hiệu bạc16 Huy hiệu đồng1 gold badge9 silver badges16 bronze badges

Đã trả lời ngày 5 tháng 8 năm 2014 lúc 6:24Aug 5, 2014 at 6:24

Hướng dẫn php catch (throwable vs exception) - bắt php (có thể ném so với ngoại lệ)

rai.skumarrai.skumarrai.skumar

9,9656 Huy hiệu vàng40 Huy hiệu bạc55 Huy hiệu Đồng6 gold badges40 silver badges55 bronze badges

Throwable bắt thực sự tất cả mọi thứ thậm chí ThreadDeath được ném theo mặc định để dừng một luồng từ phương thức

try {

} catch(Exception e) {

}
8 không còn bị phản đối. Vì vậy, bằng cách bắt Throwable, bạn có thể chắc chắn rằng bạn sẽ không bao giờ rời khỏi khối thử mà không ít nhất đi qua khối bắt của bạn, nhưng bạn nên chuẩn bị xử lý Throwable0 và Throwable1 hoặc Throwable2.

Bắt Throwable là hữu ích nhất cho các vòng lặp máy chủ bên ngoài ủy thác tất cả các loại yêu cầu cho mã bên ngoài nhưng bản thân nó có thể không bao giờ chấm dứt để giữ cho dịch vụ tồn tại.

Hướng dẫn php catch (throwable vs exception) - bắt php (có thể ném so với ngoại lệ)

Al Fohnce

4.06512 Huy hiệu vàng37 Huy hiệu bạc48 Huy hiệu đồng12 gold badges37 silver badges48 bronze badges

Đã trả lời ngày 16 tháng 2 năm 2010 lúc 15:56Feb 16, 2010 at 15:56

x4ux4ux4u

13.6K5 Huy hiệu vàng47 Huy hiệu bạc57 Huy hiệu đồng5 gold badges47 silver badges57 bronze badges

Đã trả lời ngày 24 tháng 3 lúc 12:20Mar 24 at 12:20

Hướng dẫn php catch (throwable vs exception) - bắt php (có thể ném so với ngoại lệ)

Tameem Khantameem KhanTameem Khan

3532 Huy hiệu bạc13 Huy hiệu Đồng2 silver badges13 bronze badges

Tôi đã thấy mọi người sử dụng có thể ném để bắt một số lỗi có thể xảy ra do thất bại/ không sẵn có.

Đã trả lời ngày 7 tháng 11 năm 2019 lúc 21:47Nov 7, 2019 at 21:47

Spear A1Spear A1Spear A1

4766 Huy hiệu bạc19 Huy hiệu đồng6 silver badges19 bronze badges

Tôi nên bắt có thể ném hay ngoại lệ?

Throwable là siêu lớp ngoại lệ cũng như lỗi. Trong trường hợp bình thường, chúng ta phải luôn luôn bắt được các lớp ngoại lệ, do đó nguyên nhân gốc không bị mất. Chỉ những trường hợp đặc biệt mà bạn thấy khả năng của những điều không ổn mà không kiểm soát được mã Java của bạn, bạn nên bắt lỗi hoặc có thể ném được.Only special cases where you see possibility of things going wrong which is not in control of your Java code, you should catch Error or Throwable .

Sự khác biệt giữa có thể ném và ngoại lệ trong PHP là gì?

Có thể chỉ định các phương pháp gần giống với các phương pháp ngoại lệ.Sự khác biệt duy nhất là có thể ném :: getPrevious () có thể trả về bất kỳ trường hợp nào có thể ném thay vì chỉ là một ngoại lệ.Các hàm tạo ngoại lệ và lỗi chấp nhận bất kỳ trường hợp nào có thể ném được là ngoại lệ trước đó.Throwable::getPrevious() can return any instance of Throwable instead of just an Exception . The constructors of Exception and Error accept any instance of Throwable as the previous exception.

Sự khác biệt giữa việc bắt lớp ném và lớp ngoại lệ là gì?

Throwable có hai lớp con trực tiếp - ngoại lệ và lỗi.Lớp ngoại lệ được sử dụng cho các điều kiện ngoại lệ mà ứng dụng có thể cần xử lý.Ví dụ về các trường hợp ngoại lệ bao gồm IllectalArgumentException, classNotFoundException và nullPulumException.The Exception class is used for exception conditions that the application may need to handle. Examples of exceptions include IllegalArgumentException , ClassNotFoundException and NullPointerException .

Ngoại lệ có mở rộng có thể ném không?

Ngoại lệ và lỗi đều kéo dài có thể ném, nó thực sự không có ý nghĩa mở rộng có thể kéo dài. , It really does not make sense extending Throwable .