Python-异常处理

时间:2020-02-23 14:42:41  来源:igfitidea点击:

在本教程中,我们将学习Python中的异常处理。

什么是异常?

异常是中断给定程序正常执行的事件。

在Python中,异常是表示错误的对象。

当我们的Python程序引发异常时,必须立即对其进行处理,否则它将终止程序的执行。

处理异常

我们使用tryexcept块来处理Python中的异常。

try代码块

如果我们认为有一段代码可能会引发错误,则可以将该代码放入" try"块中。

语法:

try:
  #
  # some code goes here...
  #

except

我们使用except块来处理try块内的代码段引发的异常。

语法:

try:
  #
  # some code goes here...
  #
except:
  #
  # some error handling code goes here...
  #

一个try块可以引发多种类型的异常,因此我们可以在给定的try块上附加多个except。

语法:

try:
  #
  # some code goes here...
  #
except Exception1:
  #
  # some error handling code goes here...
  #
except Exception2:
  #
  # some error handling code goes here...
  #

else

如果没有出现错误,else块将保留一段代码。

语法:

try:
  #
  # some code goes here...
  #
except:
  #
  # some error handling code goes here...
  #
else:
  #
  # some code goes here...
  #

finally块

无论try-except块如何,我们都使用" finally"块放置要执行的代码。

" finally"块是释放诸如关闭文件或者关闭数据库连接之类的资源的好地方。

语法:

try:
  #
  # some code goes here...
  #
except:
  #
  # some error handling code goes here...
  #
finally:
  #
  # some code goes here...
  #

例子1

在下面的Python程序中,我们尝试使用open函数创建一个新文件。
如果文件存在,则将引发错误,我们将使用try-except块进行处理。

try:
    # create new file
    fobj = open("sample.txt", "x")
    print("File created!")
except:
    print("Failed to create file.")

第一次运行上面的代码,我们将获得"文件已创建!"作为输出。

如果我们第二次再次运行代码,由于文件已经存在,将引发错误,并且输出将为"无法创建文件。
"。

例子2

在下面的Python程序中,我们使用try-except-else块。

try:
    # create new file
    fobj = open("sample.txt", "w")
    print("File opened in write mode.")
except:
    print("Failed to create file.")
else:
    fobj.close()
    print("File closed.")

如果执行上面的代码,我们将得到以下输出。

File opened in write mode.
File closed.

例子3

在下面的Python程序中,我们使用try-except-finally块。

try:
    # create new file
    fobj = open("sample.txt", "w")
    print("File opened in write mode.")
except:
    print("Failed to create file.")
finally:
    fobj.close()
    print("File closed.")

如果执行上面的代码,我们将得到以下输出。

File opened in write mode.
File closed.

例子4

在下面的Python程序中,我们接受用户输入并将其划分。

try:

    # take user input
    x = input("Enter 1st number x:")
    y = input("Enter 2nd number y:")

    # convert to number and divide
    result = float(x)/float(y)

    # output
    print("x/y =", result)

except ZeroDivisionError:

    # this handles specific error

    # if y is 0 then this message is prompted
    print("Can't divide by zero.")

except:

    # this handles generalised error
    print("An error occurred.")

以下是上述代码的一些输出。

输出#1

Enter 1st number x:10
Enter 2nd number y:20
x/y = 0.5

输出#2

Enter 1st number x:10
Enter 2nd number y:unknown
An error occurred.

输出#3

Enter 1st number x:10
Enter 2nd number y:0
Can't divide by zero.