2009-06-12 15 views
11

Tôi biết rằng điều này có thể không thực sự quan trọng, nhưng tôi muốn biết điều gì là chính xác.C#: Bạn có tăng hoặc ném một ngoại lệ?

Nếu một đoạn mã chứa một số phiên bản throw new SomeKindOfException(). Chúng ta có nói rằng đoạn mã này có khả năng làm tăng ngoại lệ không? Hoặc ném một ngoại lệ?

Từ khóa là throw, vì vậy tôi đang loại nghiêng về phía đó, nhưng để nâng cao một ngoại lệ cũng được sử dụng rất nhiều ...

Họ có một số loại ý nghĩa khác nhau? Liệu một trong số đó có hàm ý một sự khác biệt nào khác không? Hay chỉ là hai từ có nghĩa chính xác là giống nhau?

+0

Đối với một cuộc thảo luận liên quan trong Ruby: http://stackoverflow.com/questions/51021 –

Trả lời

25

Trong thuật ngữ C#, nâng cao được sử dụng trong ngữ cảnh sự kiện và ném được sử dụng trong ngữ cảnh ngoại lệ.

Cá nhân, tôi nghĩ rằng kết hợp throw/catch đẹp hơn raise/catch.

+0

Ah, tất nhiên, tôi hoàn toàn đồng ý. Làm cho toàn bộ ý nghĩa bây giờ! Cảm ơn bạn đã thanh toán bù trừ điều đó :) – Svish

+3

C# cũng sử dụng "thang máy", có nghĩa là "cung cấp phiên bản có thể vô hiệu của toán tử trên các loại không có giá trị" và "hoist" có nghĩa là "biến biến cục bộ thành trường bị đóng lớp học". Vì vậy, trong C# bạn có thể nâng cao, hoist hoặc nâng vật, và tất cả chúng có nghĩa là một cái gì đó khác nhau. –

3

Tôi không thể nói cho C#, nhưng trong C++ "throw" đã được chọn vì "raise" đã được dùng làm tên hàm chuẩn.

1

Tôi nghĩ rằng trong khi ném là tốt hơn, hai cụm từ có thể hoán đổi cho nhau. Rất hữu ích nếu bạn phải sử dụng nó hai lần trong một số văn bản để tránh lặp lại cùng một từ. Nhưng đó là phong cách không cần thiết cho kỹ thuật viết (nhưng vẫn là một điều tốt đẹp để có).

+2

Bạn đang viết bằng tiếng Anh, nhưng trong kỹ thuật viết tốt hơn là sử dụng nhất quán cùng một từ, hoặc người đọc có thể nghĩ rằng có một số khác biệt. – stivlo

0

Việc ném hoặc tăng có vẻ tốt, chúng có ý nghĩa tương tự đối với tôi. Tôi sẽ không viết nó, nhưng khi tôi đang nói, tôi thường nói 'mút một ngoại lệ'.

Đối với các sự kiện tôi muốn sử dụng hoặc 'kích hoạt sự kiện' hoặc 'tăng sự kiện'.

+0

"Lửa" là tất nhiên trong cách sử dụng phổ biến cho các sự kiện. Khi đưa ra các hướng dẫn về thuật ngữ, nhóm nghiên cứu làm như vậy nghĩ rằng "lửa" dường như không cần thiết, vì vậy họ gợi ý tránh "lửa" để ủng hộ "nâng cao".Ý kiến ​​cá nhân của tôi là đây là một chút ngớ ngẩn, nhưng "nâng cao" là tốt và chúng tôi cũng có thể chuẩn hóa trên một hay khác. –

1

Thuật ngữ của các ngôn ngữ khác nhau ưu tiên 'ném'. Và tôi đồng ý rằng 'ném' có ý nghĩa hơn nhiều khi xem xét đây là từ khóa được sử dụng và tài liệu biên dịch/ngôn ngữ luôn đề cập đến ngoại lệ bị 'ném'.

Tuy nhiên, trong bụng của ngoại lệ khổng lồ thực tế là Raised, không được ném. Nếu bạn thấy mình đủ sâu trong trình gỡ rối nhìn chằm chằm vào EXCEPTION_RECORD thì bạn nói trong thuật ngữ của SEH, trong đó lớp đặc biệt của trình biên dịch/ngoại lệ ngôn ngữ (eh, clr, vcpp) chỉ là một trong nhiều ngoại lệ về hương vị. Tôi đoán các điều kiện ban đầu mà ngoại lệ được nêu ra, như lỗi trang và tràn ngăn xếp, được điều kiện 'nhận thấy' bởi hạt nhân 'thông báo' chế độ người dùng của điều kiện và không ngoại lệ mã người dùng đã 'ném' vào chính mình , vì vậy thuật ngữ này có ý nghĩa hơn trong ngữ cảnh đó.