Chính xác thì ngoại lệ cơ hội đầu tiên là gì? Nó bắt nguồn như thế nào và ở đâu trong một chương trình .NET? Và tại sao nó lại được gọi bằng cái tên kỳ lạ đó (chúng ta đang nói về 'cơ hội' nào)?
Chính xác thì ngoại lệ cơ hội đầu tiên là gì? Nó bắt nguồn như thế nào và ở đâu trong một chương trình .NET? Và tại sao nó lại được gọi bằng cái tên kỳ lạ đó (chúng ta đang nói về 'cơ hội' nào)?
Câu trả lời:
Đó là một khái niệm gỡ lỗi. Về cơ bản, các ngoại lệ được ném cho trình gỡ lỗi trước và sau đó đến chương trình thực tế, nơi nếu nó không được xử lý, nó sẽ được ném đến trình gỡ lỗi lần thứ hai , cho bạn cơ hội thực hiện điều gì đó với nó trong IDE của bạn trước và sau chính ứng dụng. Đây dường như là một phát minh của Microsoft Visual Studio.
catch
cho điều này, kiểm soát sẽ đến đó. Nếu không có catch
khối nào , bạn sẽ nhận được lỗi "cơ hội thứ hai", lần này thông báo là Một ngoại lệ không được xử lý của loại 'foo' xảy ra trong YourApp.exe . Từ đây, cố gắng tiếp tục hoặc bước xa hơn sẽ không thành công.
Thông báo ngoại lệ cơ hội đầu tiên được đưa ra khi một ngoại lệ được ném ra. Thông báo cơ hội thứ hai là khi nó không bị bắt. (Cơ hội - khi có cơ hội đột nhập vào mã trong trình gỡ lỗi).
Tôi vừa mới bắt đầu sử dụng trình gỡ lỗi và gặp sự cố này. Trong nghiên cứu của mình, tôi đã tìm thấy bài đăng trên blog MSDN Ngoại lệ cơ hội đầu tiên là gì? điều đó đã giải tỏa cho tôi.
Điểm mấu chốt từ bài đăng trên blog đối với tôi là nó đề cập đến thông báo cho trình gỡ lỗi và không phải thứ mà mã của tôi nhất thiết phải xử lý và quan trọng nhất, "Thông báo ngoại lệ cơ hội đầu tiên thường không có nghĩa là có vấn đề trong mã. "
Khi một ứng dụng đang được gỡ lỗi, trình gỡ lỗi sẽ được thông báo bất cứ khi nào gặp một ngoại lệ. Tại thời điểm này, ứng dụng bị treo và trình gỡ lỗi quyết định cách xử lý ngoại lệ. Lần đầu tiên đi qua cơ chế này được gọi là ngoại lệ "cơ hội đầu tiên".
Tùy thuộc vào cấu hình của trình gỡ lỗi, nó sẽ tiếp tục ứng dụng và chuyển ngoại lệ hoặc nó sẽ khiến ứng dụng bị treo và vào chế độ gỡ lỗi. Nếu ứng dụng xử lý ngoại lệ, nó tiếp tục chạy bình thường.
Thông báo ngoại lệ cơ hội đầu tiên thường không có nghĩa là có vấn đề trong mã. Đối với các ứng dụng / thành phần xử lý ngoại lệ một cách duyên dáng, thông báo ngoại lệ cơ hội đầu tiên cho nhà phát triển biết rằng đã gặp phải tình huống ngoại lệ và đã được xử lý.
Từ quan điểm của nhà phát triển, nó liên quan nhiều hơn đến một ngoại lệ cơ hội thứ hai, bởi vì nó có nghĩa là nó không được xử lý trong mã ; do đó ứng dụng sẽ dừng lại.
Cơ hội đầu tiên có thể có nhiều người trong số họ, nhưng những thứ cần quan tâm hơn, một lần nữa, từ góc độ phát triển, là cơ hội thứ hai, vì nó sẽ dẫn đến sự cố ứng dụng.
finally
khối nào chạy. Khi hệ thống quyết định ai sẽ bắt một ngoại lệ (và xác định rằng ai đó thực sự sẽ mắc phải), hệ thống sẽ bắt đầu tháo ngăn xếp. Lưu ý rằng nếu một ngoại lệ được ném ra từ mộtfinally
khối ...