Khối cuối cùng luôn được thực thi python?

Khối mã finally cũng là một phần của xử lý ngoại lệ. Khi chúng tôi xử lý ngoại lệ bằng cách sử dụng khối tryexcept, chúng tôi có thể bao gồm khối finally ở cuối. Khối finally luôn được thực thi, vì vậy nó thường được sử dụng để thực hiện các tác vụ kết thúc như đóng tài nguyên tệp hoặc đóng kết nối cơ sở dữ liệu hoặc có thể kết thúc quá trình thực thi chương trình bằng một thông báo thú vị

Khối finally có/không có Xử lý ngoại lệ

Nếu trong mã của bạn, khối except không thể bắt ngoại lệ và thông báo ngoại lệ được in trên bảng điều khiển, làm gián đoạn quá trình thực thi mã, khối cuối cùng vẫn sẽ được thực thi

Hãy lấy một ví dụ

Hãy thử chạy đoạn mã trên cho hai giá trị khác nhau

  1. Nhập một số giá trị số nguyên làm tử số và cung cấp giá trị 0 cho mẫu số. Sau đây sẽ là đầu ra

    Bạn đã chia một số cho 0, điều này không được phép. Thực thi mã Tổng kết. Điều này sẽ được in?

    Vì chúng ta đã xử lý lớp ngoại lệ ZeroDivisionError nên đầu tiên, khối except được thực thi, sau đó là khối finally và sau đó là phần còn lại của mã

  2. Bây giờ, một số giá trị số nguyên làm tử số và cung cấp một số giá trị chuỗi cho mẫu số. Sau đây sẽ là đầu ra

    Thực thi mã Tổng kết. Traceback [cuộc gọi gần đây nhất cuối cùng]. Tập tin "chính. py", dòng 4, inb = int[input["Nhập số mẫu số. "]] Giá trịError. chữ không hợp lệ cho int[] với cơ số 10. 'dsw'

    Vì chúng tôi chưa xử lý ngoại lệ ValueError, do đó mã của chúng tôi sẽ ngừng thực thi, ngoại lệ sẽ bị ném, nhưng mã trong khối finally vẫn được thực thi

Ngoại lệ trong khối except

Chúng tôi sử dụng khối except cùng với khối try để xử lý các ngoại lệ, nhưng điều gì sẽ xảy ra nếu một ngoại lệ xảy ra bên trong khối except. Chà, khối finally vẫn sẽ được thực thi

# try block
try:
    a = 10
    b = 0
    print["Result of Division: " + str[a/b]]
# except block handling division by zero
except[ZeroDivisionError]:
    print["Result of Division: " + str[a/b]]
finally:
    print["Code execution Wrap up!"]

Thực thi mã Tổng kết. Traceback [cuộc gọi gần đây nhất cuối cùng]. Tập tin "chính. py", dòng 4, inprint["Kết quả phép chia. " + str[a/b]] ZeroDivisionError. chia cho 0 Trong quá trình xử lý ngoại lệ trên, một ngoại lệ khác đã xảy ra. Traceback [cuộc gọi gần đây nhất cuối cùng]. Tập tin "chính. py", dòng 7, inprint["Kết quả phép chia. " + str[a/b]] ZeroDivisionError. chia cho số không

Rõ ràng khối _______________ là khối đầu tiên được in trên bảng điều khiển, sau đó là thông báo ngoại lệ đầu tiên và sau đó là thông báo ngoại lệ thứ hai

Trong bài viết này, tôi sẽ thảo luận về Chặn cuối cùng trong Python với các ví dụ. Vui lòng đọc bài viết trước của chúng tôi, nơi chúng tôi đã thảo luận về Xử lý ngoại lệ trong Python. Là một phần của bài viết này, chúng ta sẽ thảo luận chi tiết về các gợi ý sau
  1. Tại sao chúng ta cần khối cuối cùng?
  2. cuối cùng Chặn trong Python
  3. Tại sao không chặn 'thử ngoại trừ' đối với các hoạt động dọn dẹp?
  4. Các trường hợp luồng điều khiển khác nhau của thử ngoại trừ cuối cùng trong python
Tại sao chúng ta cần khối cuối cùng?

Trong bất kỳ dự án nào sau khi hoàn thành nhiệm vụ, nên tiêu hủy tất cả những thứ không mong muốn được tạo ra để hoàn thành nhiệm vụ. Ví dụ: nếu tôi đã mở kết nối cơ sở dữ liệu trong mã của mình và thực hiện một số tác vụ liên quan đến cơ sở dữ liệu. Sau khi hoàn thành các nhiệm vụ, nên đóng kết nối. Các hoạt động dọn dẹp này rất quan trọng và cần được xử lý trong mã của chúng tôi

cuối cùng Chặn trong Python

cuối cùng là một từ khóa trong python có thể được sử dụng để viết khối cuối cùng để thực hiện các hoạt động dọn dẹp

Tại sao không chặn 'thử ngoại trừ' đối với các hoạt động dọn dẹp?

thử khối. Không có gì đảm bảo rằng mọi câu lệnh sẽ được thực thi bên trong khối thử. Nếu một ngoại lệ được đưa ra ở dòng mã thứ hai trong khối thử tại, thì các dòng mã còn lại trong khối đó sẽ không thực thi. Vì vậy, không nên viết mã dọn dẹp bên trong khối thử

trừ khối. Không có gì đảm bảo rằng một khối ngoại trừ sẽ thực thi. Nếu không có ngoại lệ thì khối ngoại trừ sẽ không được thực thi. Do đó, cũng không nên viết mã dọn dẹp bên trong khối ngoại trừ

Phần kết luận

Vì vậy, cần có một khối riêng biệt để viết các hoạt động dọn dẹp. Khối mã này phải luôn thực thi bất kể ngoại lệ. Nếu không có ngoại lệ, thì mã dọn dẹp sẽ thực thi. Nếu một ngoại lệ được nêu ra và cũng được xử lý, thì mã dọn dẹp cũng sẽ được thực thi. Nếu một ngoại lệ được đưa ra, nhưng không được xử lý, thì mã dọn dẹp cũng sẽ được thực thi

Tất cả các yêu cầu trên, không thể đạt được bằng khối tryngoại trừ, có thể đạt được bằng khối cuối cùng. Khối cuối cùng sẽ luôn được thực thi, bất kể ngoại lệ có được đưa ra hay không, ngoại lệ có được xử lý hay không

Trường hợp 1. Nếu không có ngoại lệ, thì khối cuối cùng sẽ thực thi

Chương trình. demo20. py

try:
   print["try block"]
except:
   print["except block"]
finally:
   print["finally block"]

đầu ra

trường hợp 2. Nếu một ngoại lệ được đưa ra và xử lý với khối except, thì khối cuối cùng cũng sẽ được thực thi

Chương trình. demo21. py

try:
   print["try block"]
   print[10/0]
except ZeroDivisionError:
   print["except block"]
finally:
   print["finally block"]

đầu ra

Trường hợp 3. Nếu một ngoại lệ được đưa ra bên trong khối try nhưng khối ngoại trừ không xử lý ngoại lệ cụ thể đó, thì khối cuối cùng cũng sẽ được thực thi

Chương trình. demo22. py

try:
   print["try block"]
   print[10/0]
except NameError:
   print["except block"]
finally:
   print["finally block"]

đầu ra

Nếu một ngoại lệ được đưa ra nhưng không được xử lý, thì chương trình phải chấm dứt bất thường. Nhưng trước khi kết thúc, khối cuối cùng sẽ được thực thi

Các trường hợp luồng điều khiển khác nhau của thử ngoại trừ cuối cùng trong pythonTrường hợp 1

Nếu không có ngoại lệ, thì hãy thử và cuối cùng các khối sẽ thực thi và khối ngoại trừ sẽ không thực thi, dẫn đến kết thúc bình thường

Chương trình. demo23. py

print["One"]
print["Two"]
try:
   print["try block"]
except ZeroDivisionError:
   print["except block: Handling code"]
finally:
   print["finally block: clean-up activities"]
print["Four"]

đầu ra

trường hợp 2

Nếu một ngoại lệ được đưa ra bên trong khối thử và khối ngoại trừ đang xử lý ngoại lệ tương ứng đó thì các khối thử, ngoại trừ và cuối cùng sẽ thực thi, dẫn đến kết thúc bình thường

Chương trình. demo24. py

print["One"]
print["Two"]
try:
   print["try block"]
   print[10/0]
except ZeroDivisionError:
   print["except block: Handling code"]
finally:
   print["finally block: clean-up activities"]
print["Four"]

đầu ra

Trường hợp 3

Nếu một ngoại lệ được đưa ra bên trong khối thử và khối ngoại trừ không xử lý ngoại lệ tương ứng đó thì các khối thử và cuối cùng sẽ thực thi, dẫn đến kết thúc bất thường

Chương trình. demo25. py

print["One"]
print["Two"]
try:
   print["try block"]
   print[10/0]
except NameError:
   print["except block: Handling code"]
finally:
   print["finally block: clean-up activities"]
print["Four"]

đầu ra

Trong chương trình trên, vì nó kết thúc bất thường nên câu lệnh in sau [print[“Four”]] khối cuối cùng không được thực thi

Trường hợp 4

Nếu một ngoại lệ được đưa ra bên trong khối thử, thì luồng sẽ chuyển sang khối ngoại trừ. Và trong khối ngoại trừ, giả sử, ngoại lệ cụ thể được xử lý. Thay vì xử lý ngoại lệ, nếu khối đó tự phát sinh ngoại lệ khác thì chương trình sẽ kết thúc bất thường. Trong trường hợp này cũng vậy, trước khi kết thúc chương trình, khối finally sẽ được thực thi

Chương trình. demo26. py

print["One"]
print["Two"]
try:
   print["try block"]
   print[10/0]
except ZeroDivisionError:
   print[10/0]
finally:
   print["finally block: clean-up activities"]
print["Four"]

đầu ra

Trường hợp 5

Nếu một ngoại lệ được đưa ra bên trong khối cuối cùng, thì đó luôn là sự chấm dứt bất thường

Chương trình. demo27. py

________số 8_______

đầu ra

Trong bài viết tiếp theo, tôi sẽ thảo luận về các khối try-ngoại trừ cuối cùng lồng nhau trong Python với các ví dụ. Ở đây, trong bài viết này, tôi cố gắng giải thích Cuối cùng Chặn trong Python bằng các ví dụ. Tôi hy vọng bạn thích bài viết Cuối cùng về khối trong Python với các ví dụ này. Tôi muốn có phản hồi của bạn. Vui lòng gửi phản hồi, câu hỏi hoặc nhận xét của bạn về bài viết này

Cuối cùng sẽ luôn luôn được thực hiện?

Khối cuối cùng luôn được thực thi cho dù ngoại lệ có xảy ra hay không . Nếu một ngoại lệ xảy ra như đóng tệp hoặc kết nối DB, thì khối cuối cùng được sử dụng để dọn sạch mã. Chúng tôi không thể nói khối cuối cùng luôn được thực thi bởi vì đôi khi nếu bất kỳ câu lệnh nào như System.

Khi mã khối cuối cùng được thực thi trong Python?

Khối cuối cùng luôn thực thi sau khi khối thử kết thúc bình thường hoặc sau khi khối thử kết thúc do một số ngoại lệ . khối cuối cùng luôn được thực thi sau khi thoát khỏi câu lệnh thử. Trong trường hợp nếu một số ngoại lệ không được xử lý bởi khối ngoại trừ, thì nó sẽ được kích hoạt lại sau khi thực hiện khối cuối cùng.

Có thể là khối cuối cùng sẽ không được thực hiện?

Ghi chú. Khối cuối cùng có thể không thực thi nếu JVM thoát trong khi mã try hoặc catch đang được thực thi .

Khối cuối cùng có luôn được thực thi sau khi trả về không?

Có, khối cuối cùng sẽ được thực thi ngay cả sau câu lệnh return trong một phương thức . Khối cuối cùng sẽ luôn thực thi ngay cả khi có ngoại lệ xảy ra hay không trong Java.

Chủ Đề