如何用python中的try和except工作?

问题描述 投票:-1回答:1

我想请大家帮忙。 这个程序必须分析学生的数字,如果他们是正确的,他们写到ons列表,如果没有写到另一个列表,他们是正确的,如果他们有八个数字,只包含数字。

如果有人能帮助我,我将非常感激。

Valid_file = "ValidNumbers.txt"
Invalid_file = "InvalidNumbers.txt"
Data_file = "Data.txt"

def analyse_students(Data_file):
    lenth = len(Data_file)
    total = 0
    try:

    except: 

    return 0

def read(Data_file):
    count = 0
    student_list = []
    try:
        open(Data_file)
    except:
        print("Couldn't append file", Valid_file)
    return count, student_list

def write(student, status):
    if status:
        try:
            open(Data_file)
        except:
            print("Couldn't append file", Invalid_file)

count, student_list = read(Data_file)

print("Number of lines read", count)

for student in student_list:

    print("See output files")
python try-catch except
1个回答
0
投票

Okey,所以有一些事情需要解释的地方。

try-except是用来干什么的?

它是用来捕捉程序引发的错误的。任何容易引发异常的代码都会被插入到一个叫做 try 语句,而在该语句下面,则有任意数量的 except 语句和任何一个你想捕捉的错误。

try:
    user_input = int(input('Give me a number: '))
except ValueError:
    print('That is not a number!')

什么时候我应该使用try-except?

使用 "try-except "语句不是一个好的做法。try-except 的每一行代码,因为这可能是其中的一半,或者更多。那么什么时候应该使用它呢?很简单,问这个问题。我是否想在错误发生时做任何自定义操作? 如果答案是 是的,你可以走了。

捕捉 Exception 或空 except

在您的例子中,我看到您使用的是一个空的 except. 使用一个空的 except 语句将捕获每一个被包围的代码所引发的错误,这与捕获 Exception. 该 Exception 类是Python环境中每一个非系统退出的内置异常的超类(读到这里),一般来说,它的做法很不好,要么用所有的例外来抓 except:Exceptionexcept Exception:. 为什么呢? 因为你没有让用户(甚至你这个程序员)知道你在处理什么错误。比如说

fruits = ['apple', 'pear', 'banana']
try: 
    selection = fruits[int(input('Select a fruit number (0-2): '))]  
except Exception:
    print('Error!')
    # But wait, are you catching ValueError because the user did not input a number, 
    # or are you catching IndexError because he selected an out of bound array index? 
    # You don't know  

捕获多个异常

基于前面的例子,您可以使用多个 try-except 语句来区分哪些错误正在被提出。

fruits = ['apple', 'pear', 'banana']
try: 
    selection = fruits[int(input('Select a fruit number (0-2): '))]  
except ValueError:
    print('That is not a number')
except IndexError:
    print('That fruit number does not exist!')  

异常分组

如果有两个特定的例外情况,你想用于同一个目的,你可以将它们归入一个名为 "例外情况 "的组。tuple:

fruits = ['apple', 'pear', 'banana']
try: 
    selection = fruits[int(input('Select a fruit number (0-2): '))]  
except (ValueError, IndexError):
    print('Invalid selection!')  

您的案件

根据这些信息,添加以下内容 try-except 块,看看在执行过程中可能会出现哪些错误,问之前推荐的问题。我想用这个错误执行一些自定义的动作吗?

另外

  • try-except-else 声明。见 此处
  • try-except-finally 声明。见 此处
  • 你可以把它们结合在一起,在一个 try-except1-except2...exceptN-else-finally 语句。
  • 我建议你熟悉内置错误为什么要练习这个!
© www.soinside.com 2019 - 2024. All rights reserved.