2013-08-12 29 views
9

tôi thấy thường là những từ ngữ dưới đây trong C++ câu hỏi phỏng vấn:Sự khác biệt giữa bẫy, lỗi, lỗi và phá thai chương trình là gì?

  • chương trình hủy bỏ
  • lỗi
  • thất bại
  • bẫy

Tôi không chắc chắn nhìn thấy rõ ràng sự khác biệt giữa những điều khoản đó. Ai đó có thể cung cấp một lời giải thích ngắn gọn rõ ràng?

Edit: câu hỏi bối cảnh là: "gì xảy ra khi bạn xóa một con trỏ hai lần?" Nhưng biết sự khác biệt giữa những điều khoản quan trọng hơn đối với tôi hơn là chỉ câu trả lời.

+0

Câu hỏi phỏng vấn sẽ cung cấp một số ngữ cảnh rõ ràng bị thiếu để đưa ra giải thích về sự hài lòng mà bạn đang tìm kiếm. –

+1

Điều này quá chung chung. Bạn cần cung cấp một câu hỏi mẫu. Đó là, ví dụ, một lỗi để '# define' một từ khóa ngôn ngữ, nhưng mỗi trình biên dịch cho phép bạn làm điều đó mà không có một lời cảnh báo. Nó cũng có thể là một lỗi để chuyển một tham số ngoài phạm vi sang một hàm, có thể dẫn đến một chương trình bị hủy bỏ. –

+1

'Cái bẫy' là gì - xem http://stackoverflow.com/questions/3149175/what-is-the-difference-between-trap-and-interrupt – devnull

Trả lời

0

Tất cả các cụm từ này hơi mơ hồ, đặc biệt là lỗi và lỗi. Về cơ bản, chúng có cùng ý nghĩa chung: một điều gì đó sai. Hủy bỏ chương trình có thể đề cập đến việc gọi hàm chuẩn của thư viện C là hàm abort, làm tăng tín hiệu SIGABRT. Điều này thường dẫn đến việc chấm dứt chương trình không đúng, nhưng phụ thuộc vào nền tảng và có hay không tín hiệu bị bắt. Bẫy có thể đề cập đến việc đánh dấu tín hiệu nói chung được điều khiển bởi chức năng tiêu chuẩn của thư viện C là signal.

4

Đây không thực sự đặc biệt đối với C++.

  • Hủy bỏ là khi bạn chấm dứt chương trình hoặc một hoạt động cụ thể, do có sự cố. Có một chức năng thư viện C++ std::abort, được kế thừa từ thư viện C, sẽ giết chết chương trình như thể bởi một tín hiệu bên ngoài và không chạy các trình phá hủy hoặc dọn dẹp.

  • Lỗi là khi xảy ra sự cố. Trong C++, nhiều loại lỗi không nhất thiết phải được phát hiện ngay lập tức. C++ thay vì chỉ định hành vi không xác định, có thể liên quan đến tham nhũng bộ nhớ yên tĩnh có thể gây ra hành vi sai trái bí ẩn sau này.

  • Lỗi là khi chương trình thực hiện sai. Đây là thuật ngữ kỹ thuật khá chung chung. Ông chủ tóc nhọn có lẽ quen thuộc hơn với khái niệm này so với những người khác, bởi vì đó là người duy nhất mà khách hàng thực sự nhận thức được.

  • Bẫy là khi chương trình phát hiện tình trạng lỗi và thực hiện một số hành động tương ứng.

Vì vậy, nếu bạn phát hiện rằng mạng đi xuống, và hiển thị một thông điệp tới người dùng như "Không thể tiếp tục; tài liệu của bạn đã được tự động lưu" trước khi cai thuốc lá, sau đó bạn đã bị mắc kẹt một lỗi và hủy bỏ, nhưng vẫn có một thất bại.

+2

Một cái bẫy thường được phát hiện bởi phần cứng (MMU, v.v.). –

+0

@JamesKanze Tôi nghĩ đó là một thuật ngữ khá chung chung. "Tôi tìm thấy một loại lỗi mới mà chúng tôi cần phải bẫy" là điều tôi sẽ nói trong bất kỳ kỷ luật phần mềm nào. – Potatoswatter

+0

Thú vị. Tôi chưa bao giờ nghe nó được sử dụng theo cách này; "Tôi tìm thấy một loại lỗi mới mà chúng tôi cần phải nắm bắt" dường như có nhiều khả năng hơn với tôi. Nhưng suy nghĩ chính của tôi là khi ngôn ngữ nói về biểu diễn "bẫy"; một mẫu bit gây ra bẫy phần cứng (gửi chương trình vào trình xử lý bẫy trong hệ điều hành). –

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