Hướng dẫn python exception continue loop - vòng lặp tiếp tục ngoại lệ python

Tôi có một mã trong đó tôi lặp qua danh sách máy chủ và nối các kết nối vào danh sách kết nối, nếu có lỗi kết nối, tôi muốn bỏ qua điều đó và tiếp tục với máy chủ tiếp theo trong danh sách máy chủ.

Đây là những gì tôi có bây giờ:

def do_connect[self]:
    """Connect to all hosts in the hosts list"""
    for host in self.hosts:
        try:
            client = paramiko.SSHClient[]
            client.set_missing_host_key_policy[paramiko.AutoAddPolicy[]]
            client.connect[host['ip'], port=int[host['port']], username=host['user'], timeout=2]
        except:
            pass
            #client.connect[host['ip'], port=int[host['port']], username=host['user'], password=host['passwd']]

        finally:
            if paramiko.SSHException[]:
                pass
            else:
                self.connections.append[client]

Điều này không hoạt động đúng, nếu kết nối không thành công, nó chỉ lặp lại cùng một máy chủ mãi mãi, cho đến khi nó thiết lập kết nối, làm thế nào để tôi khắc phục điều này?

Đã hỏi ngày 9 tháng 10 năm 2017 lúc 8:43Oct 9, 2017 at 8:43

4

Câu trả lời của riêng bạn vẫn còn sai ở một vài điểm ...

import logging
logger = logging.getLogger[__name__]

def do_connect[self]:
    """Connect to all hosts in the hosts list"""
    for host in self.hosts:
        # this one has to go outside the try/except block
        # else `client` might not be defined.
        client = paramiko.SSHClient[]
        try:
            client.set_missing_host_key_policy[paramiko.AutoAddPolicy[]]
            client.connect[host['ip'], port=int[host['port']], username=host['user'], timeout=2]

        # you only want to catch specific exceptions here
        except paramiko.SSHException as e:
            # this will log the full error message and traceback
            logger.exception["failed to connect to %[ip]s:%[port]s [user %[user]s]", host] 

            continue
        # here you want a `else` clause not a `finally`
        # [`finally` is _always_ executed]
        else:
            self.connections.append[client]

Đã trả lời ngày 9 tháng 10 năm 2017 lúc 9:22Oct 9, 2017 at 9:22

2

OK, nó đã hoạt động, tôi cần thêm sự tiếp tục, được đề cập bởi Mark và cũng là trước đây nếu kiểm tra bên trong cuối cùng luôn luôn trả về đúng để điều đó đã được cố định.

Đây là mã cố định, không thêm kết nối thất bại và tiếp tục vòng lặp bình thường sau đó:

def do_connect[self]:
    """Connect to all hosts in the hosts list"""
    for host in self.hosts:
        try:
            client = paramiko.SSHClient[]
            client.set_missing_host_key_policy[paramiko.AutoAddPolicy[]]
            client.connect[host['ip'], port=int[host['port']], username=host['user'], timeout=2]
        except:
            continue
            #client.connect[host['ip'], port=int[host['port']], username=host['user'], password=host['passwd']]

        finally:
            if client._agent is None:
                pass
            else:
                self.connections.append[client]

Đã trả lời ngày 9 tháng 10 năm 2017 lúc 9:08Oct 9, 2017 at 9:08

NanoninanoniNanoni

4112 Huy hiệu vàng7 Huy hiệu bạc19 Huy hiệu đồng2 gold badges7 silver badges19 bronze badges

1

Tôi có một mã trong đó tôi lặp qua danh sách máy chủ và nối các kết nối vào danh sách kết nối, nếu có lỗi kết nối, tôi muốn bỏ qua điều đó và tiếp tục với máy chủ tiếp theo trong danh sách máy chủ.

Nội phân chính

  • Python trong khi vòng lặp tiếp tục phá vỡ
  • Python trong khi ngoại lệ vòng lặp tiếp tục
  • Python lồng nhau trong khi vòng lặp tiếp tục
  • Python trong khi vòng lặp thực sự tiếp tục
  • Trong khi vòng lặp tiếp tục ví dụ Python
  • Python cố gắng ngoại trừ tiếp tục trong khi vòng lặp
  • Python trong khi vòng lặp phá vỡ và tiếp tục
  • Làm thế nào để bạn tiếp tục một vòng lặp ngay cả sau một ngoại lệ?
  • Làm thế nào để bạn tiếp tục một vòng lặp sau khi bắt được ngoại lệ trong thử Catch Python?
  • Python có tiếp tục sau khi ngoại trừ không?
  • Làm thế nào để bạn tiếp tục một vòng lặp trong Python?

Tuyên bố tiếp tục trong Python trả lại quyền kiểm soát về đầu của vòng lặp trong khi. Tuyên bố tiếp tục từ chối tất cả các câu lệnh còn lại trong lần lặp hiện tại của vòng lặp và di chuyển điều khiển trở lại đỉnh của vòng lặp. Tuyên bố tiếp tục có thể được sử dụng trong cả hai trong khi và cho các vòng lặp.

def do_connect[self]:
    """Connect to all hosts in the hosts list"""
    for host in self.hosts:
        try:
            client = paramiko.SSHClient[]
            client.set_missing_host_key_policy[paramiko.AutoAddPolicy[]]
            client.connect[host['ip'], port=int[host['port']], username=host['user'], timeout=2]
        except:
            pass
            #client.connect[host['ip'], port=int[host['port']], username=host['user'], password=host['passwd']]

        finally:
            if paramiko.SSHException[]:
                pass
            else:
                self.connections.append[client]

Tôi có một mã trong đó tôi lặp qua danh sách máy chủ và nối các kết nối vào danh sách kết nối, nếu có lỗi kết nối, tôi muốn bỏ qua điều đó và tiếp tục với máy chủ tiếp theo trong danh sách máy chủ.

Nội phân chínhOct 9, 2017 at 8:43

4

Python trong khi vòng lặp tiếp tục phá vỡ

import logging
logger = logging.getLogger[__name__]

def do_connect[self]:
    """Connect to all hosts in the hosts list"""
    for host in self.hosts:
        # this one has to go outside the try/except block
        # else `client` might not be defined.
        client = paramiko.SSHClient[]
        try:
            client.set_missing_host_key_policy[paramiko.AutoAddPolicy[]]
            client.connect[host['ip'], port=int[host['port']], username=host['user'], timeout=2]

        # you only want to catch specific exceptions here
        except paramiko.SSHException as e:
            # this will log the full error message and traceback
            logger.exception["failed to connect to %[ip]s:%[port]s [user %[user]s]", host] 

            continue
        # here you want a `else` clause not a `finally`
        # [`finally` is _always_ executed]
        else:
            self.connections.append[client]

Python trong khi ngoại lệ vòng lặp tiếp tụcOct 9, 2017 at 9:22

2

Python lồng nhau trong khi vòng lặp tiếp tục

Python trong khi vòng lặp thực sự tiếp tục

def do_connect[self]:
    """Connect to all hosts in the hosts list"""
    for host in self.hosts:
        try:
            client = paramiko.SSHClient[]
            client.set_missing_host_key_policy[paramiko.AutoAddPolicy[]]
            client.connect[host['ip'], port=int[host['port']], username=host['user'], timeout=2]
        except:
            continue
            #client.connect[host['ip'], port=int[host['port']], username=host['user'], password=host['passwd']]

        finally:
            if client._agent is None:
                pass
            else:
                self.connections.append[client]

Trong khi vòng lặp tiếp tục ví dụ PythonOct 9, 2017 at 9:08

Python cố gắng ngoại trừ tiếp tục trong khi vòng lặpNanoni

Python trong khi vòng lặp phá vỡ và tiếp tục2 gold badges7 silver badges19 bronze badges

1

Làm thế nào để bạn tiếp tục một vòng lặp ngay cả sau một ngoại lệ?Python While loop continue. Here we will also cover the below examples:

  • Python trong khi vòng lặp tiếp tục phá vỡ
  • Python trong khi ngoại lệ vòng lặp tiếp tục
  • Python lồng nhau trong khi vòng lặp tiếp tục
  • Python trong khi vòng lặp thực sự tiếp tục
  • Trong khi vòng lặp tiếp tục ví dụ Python
  • Python cố gắng ngoại trừ tiếp tục trong khi vòng lặp
  • Python cố gắng ngoại trừ tiếp tục trong khi vòng lặp
  • Python trong khi vòng lặp phá vỡ và tiếp tục
  • Làm thế nào để bạn tiếp tục một vòng lặp ngay cả sau một ngoại lệ?continue statement in the While loop in Python.
  • Đây là những gì tôi có bây giờ: is used to skip the part of the loop. This statement executes the loop to continue the next iteration.
  • Điều này không hoạt động đúng, nếu kết nối không thành công, nó chỉ lặp lại cùng một máy chủ mãi mãi, cho đến khi nó thiết lập kết nối, làm thế nào để tôi khắc phục điều này?

Example:

Đã hỏi ngày 9 tháng 10 năm 2017 lúc 8:43

new_var = 8
while new_var >0:
    new_var=new_var-1
    if new_var==2:
        continue
    print[new_var]
print["loop end"]

Câu trả lời của riêng bạn vẫn còn sai ở một vài điểm ...

Đã trả lời ngày 9 tháng 10 năm 2017 lúc 9:22

OK, nó đã hoạt động, tôi cần thêm sự tiếp tục, được đề cập bởi Mark và cũng là trước đó nếu kiểm tra bên trong cuối cùng luôn luôn trả về đúng để điều đó đã được cố định.

Đây là mã cố định, không thêm kết nối thất bại và tiếp tục vòng lặp bình thường sau đó:

Example:

Đã trả lời ngày 9 tháng 10 năm 2017 lúc 9:08

Nanoninanoni

4112 Huy hiệu vàng7 Huy hiệu bạc19 Huy hiệu đồng

Trong hướng dẫn Python này, chúng tôi sẽ thảo luận về Python trong khi Loop tiếp tục. Ở đây chúng tôi cũng sẽ bao gồm các ví dụ dưới đây:

Python trong khi vòng lặp tiếp tục phá vỡ

  • Python trong khi ngoại lệ vòng lặp tiếp tục
  • Python lồng nhau trong khi vòng lặp tiếp tục

Example:

while True:
    result = input['enter a for the loop: ']
    if result == 'a':
        break
print['exit loop']

a = 0
while a 

Bài Viết Liên Quan

Chủ Đề