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ì?
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 Exception
và Error
], 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.
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
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ý Throwable
0 và Throwable
1 hoặc Throwable
2.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.
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
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