Từ bên trong một khối cuối cùng, có thể nói một ngoại lệ đã được nêu ra không?Làm cách nào để biết tôi có đang ở trong ngăn xếp ngoại lệ Delphi không?
Trả lời
Bạn có thể kiểm tra xem ExceptObject hoặc ExceptAddr được giao . Trong nguồn VCL, điều này được thực hiện để kiểm tra. trong GIFImg.pas hoặc jpeg.pas.
Các mã sau đây nên sản lượng
ExceptObject <> nil
ExceptObject = nil
và nếu bạn loại bỏ các ngoại lệ thì tất nhiên
ExceptObject = nil
ExceptObject = nil
try
try
raise Exception.Create('Just an exception');
finally
if ExceptObject <> nil then
WriteLn('ExceptObject <> nil')
else
WriteLn('ExceptObject = nil');
end;
except
end;
if ExceptObject <> nil then
WriteLn('ExceptObject <> nil')
else
WriteLn('ExceptObject = nil');
Xin chào, rất vui được gặp bạn ở đây! –
Đây là loại hack, nhưng bạn có thể thử gọi AcquireExceptionObject. Nếu bạn ở trạng thái ngoại lệ, bạn sẽ nhận được một giá trị trả về, nếu không bạn sẽ nhận được số không.
(. Nếu bạn đã có được một, hãy chắc chắn để gọi ReleaseExceptionObject sau)
AFAIK này chỉ có thể đạt được với tuyên bố thử lồng nhau:
Try
Try
...
Except
...
End;
Finally
...
End
- 1. Làm cách nào để tôi có một ngoại lệ và giữ lại dấu vết ngăn xếp?
- 2. Làm cách nào tôi có thể xem ngăn xếp cuộc gọi ngoại lệ trong SharePoint 2010?
- 3. Tôi làm cách nào để tìm các ngoại lệ gốc trong ngăn xếp x64?
- 4. Làm cách nào để cho Delphi biết tôi đã xử lý ngoại lệ?
- 5. Ngoại lệ không có dấu vết ngăn xếp trong Java
- 6. Làm cách nào để tôi có thể trả lại ngoại lệ trong Javascript, nhưng vẫn giữ nguyên ngăn xếp?
- 7. Dấu vết ngăn xếp ngoại lệ Javascript
- 8. Làm cách nào để biết tôi có đang ở trạng thái postback không?
- 9. AppDomain.FirstChanceException và ngoại lệ tràn ngăn xếp
- 10. Làm thế nào để tăng ngoại lệ trong Delphi?
- 11. Không có ngăn xếp cuộc gọi nào về Ngoại lệ trong xCode 4
- 12. Ngoại lệ tràn ngăn xếp — tại sao?
- 13. Làm cách nào để biết tôi đang ở trong chương trình con nào?
- 14. Ngoại lệ trang bảo vệ trong Delphi?
- 15. Làm thế nào tôi có thể viết một dấu vết ngăn xếp ngoại lệ trong erlang sau khi bắt nó?
- 16. Làm cách nào để loại trừ ngoại lệ mà không làm mất ngăn xếp cuộc gọi ban đầu?
- 17. Làm thế nào để gcc thực hiện ngăn xếp unrolling cho ngoại lệ C++ trên Linux?
- 18. Tại sao tôi không nhận được số dòng từ ngăn xếp ngăn xếp được tạo từ Ngoại lệ?
- 19. Làm cách nào để tôi tăng lại ngoại lệ Delphi sau khi đăng nhập?
- 20. Làm cách nào để biết tập lệnh Perl của tôi có đang chạy trong Windows không?
- 21. Làm thế nào để định dạng dấu vết ngăn xếp của ngoại lệ trong C#?
- 22. Có cách nào để kết xuất một dấu vết ngăn xếp mà không ném một ngoại lệ trong java?
- 23. Làm thế nào để có được chuỗi dấu vết ngăn xếp mà không tăng ngoại lệ trong python?
- 24. EProgrammerKhông có ngoại lệ trong Delphi?
- 25. in dấu vết ngăn xếp python mà không có ngoại lệ được nâng lên
- 26. Làm thế nào để JVM biết nơi để bắt một ngoại lệ khi chạy?
- 27. Dấu vết ngăn xếp C++ di động khi ngoại lệ
- 28. Tôi có thể lấy dấu vết ngăn xếp cho các ngoại lệ C++ không được xử lý (Mục tiêu) không?
- 29. Làm thế nào để có được dấu vết ngăn xếp của một ngoại lệ trong Scala để in nó?
- 30. Tôi có thể bắt ngoại lệ trong MVVM ở đâu?
Bạn có hỏi liệu bạn có đang e trong khối 'finally' * vì * một ngoại lệ đã được nâng lên, hoặc chỉ là có ngoại lệ * ở đâu đó * trong chương trình, chẳng hạn như khi bạn nhập một khối' try-finally' từ bên trong một phần 'except'? –