在python中、如果异常并未被处理或捕捉_python异常处理(一)

Python的异常处理能力是很强大的,可向用户准确反馈出错信息。在Python中,异常也是对象,可对它进行操作。所有异常都是基类Exception的成员。所有异常都从基类Exception继承,而且都在exceptions模块中定义。Python自动将所有异常名称放在内建命名空间中,所以程序不必导入exceptions模块即可使用异常。Python用异常对象(exception object)表示异常情况,遇到错误后,会引发异常。如果异常对象并未被处理或捕捉,程序就会用所谓的回溯(Traceback,一种错误信息)终止执行。

注意:虽然大多数错误会导致异常,但一个异常不一定代表错误,有时候它们只是一个警告,有时候它们可能是一个终止信号,比如退出循环等。

一.与python异常相关的关键字

raise:手动抛出/引发异常:raise [exception[,data]

try/except:捕获异常并处理

pass:忽略异常

as:定义异常实例(except IOError as e)

finally:无论是否出现异常,都执行的代码]

else:如果try中的语句没有引发异常,则执行else中的语句

except Exception as error:

二.python中的异常类型

1.StandardError类:如果程序上出现逻辑错误, 将引发该异常。StandardError类是所有内敛异常的基类,放置在默认的命名空间中,因此使用IOEroor, EOFError, ImportError等类,不需要导入exception模块。

StopIteration类:判断循环是否执行到尾部,如果循环到尾部,则抛出该异常。

GeneratorExit类:是由Generator函数引发的异常,当调用close()时引发该异常。

Warning类:表示程序中的代码引起的警告。

三.基本方式:

1.try:

语句1

except  [exception1(,exception2...),[data…]]:

语句2

else:

语句3

该种异常处理语法的规则是:

·   执行try下的语句,如果引发异常,则执行过程会跳到第一个except语句。

·   如果第一个except中定义的异常与引发的异常匹配,则执行该except中的语句。

·   如果引发的异常不匹配第一个except,则会搜索第二个except,允许编写的except数量没有限制。

·   如果所有的except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。

·   如果没有发生异常,则执行else块代码。

import traceback

try:

1/0

except Exception as err:

print(err)

try:

f = open("file.txt","r")

except IOError as e:

print(e)

try:

f = open("file.txt","r")

except Exception as e:

print(e)

最后两个的输出是一模一样的---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2.try:

语句1

finally:

语句2

该语句的执行规则是:

·   执行try下的代码。

·   如果发生异常,在该异常传递到下一级try时,执行finally中的代码。

·   如果没有发生异常,则执行finally中的代码。

第二种try语法在无论有没有发生异常都要执行代码的情况下是很有用的。例如我们在python中打开一个文件进行读写操作,我在操作过程中不管是否出现异常,最终都是要把该文件关闭的。这两种形式相互冲突,使用了一种就不允许使用另一种,而功能又各异

所以,一般情况下,finally里面执行的都是一些清理工作,比如:关闭文件描述符,释放锁等

注意,finally中,如果出现异常,外部如果没有相应的捕获机制,该异常会层层抛出,直到最顶端,然后解释器停止。一般在外层再加一次try except异常捕获

三.手动使用raise引发异常

1.raise [exception[,data]]

2.在Python中,要想引发异常,最简单的形式就是输入关键字raise,后跟要引发的异常的名称。异常名称标识出具体的类:Python异常是那些类的对象。执行raise语句时,Python会创建指定的异常类的一个对象。raise语句还可指定对异常对象进行初始化的参数。为此,请在异常类的名称后添加一个逗号以及指定的参数(或者由参数构成的一个元组)。

3.实例:

try:

print("开始测试")

raise IOError

except IOError:

print("定义好的错误")

except:

print("别的错误")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python 内置异常是由 Python 解释器自带的错误类型,这些错误类型在 Python 的标准库已经定义好了。常见的内置异常有: - ValueError:当传入的参数值不合法时抛出 - TypeError:当传入的参数类型不合法时抛出 - KeyError:当访问字典的不存在的键时抛出 - IndexError:当访问序列的不存在的索引时抛出 - NameError:当使用未定义的变量时抛出 - IOError: 当操作文件时出现错误,比如文件不存在 开发人员可以使用 try-except 语句来捕获处理这些异常。 ### 回答2: Python内置异常是指在Python编程语言,已经定义好的一些异常类。这些异常类可以用来捕获处理在程序执行过程可能发生的错误或异常情况。Python内置异常包含了各种类型的异常,如语法错误、算术错误、索引错误、类型错误等等。 其,一些常见的Python内置异常包括: 1. SyntaxError(语法错误):当代码存在语法错误时会抛出此异常。例如,缺少冒号、括号不匹配、缩进不正确等。 2. NameError(名称错误):当尝试访问一个未定义的变量或函数时会抛出此异常。例如,访问未声明的变量名或函数名。 3. TypeError(类型错误):当对不符合预期类型的对象执行操作时会抛出此异常。例如,将字符串类型和整数类型相加。 4. IndexError(索引错误):当使用无效的索引访问序列(如列表或字符串)的元素时会抛出此异常。例如,访问不存在的列表元素。 5. KeyError(键错误):当使用字典不存在的键访问元素时会抛出此异常。例如,访问不存在的字典键。 6. ValueError(值错误):当传递给函数的参数值不合法时会抛出此异常。例如,将无法解析的字符串转换为数字。 7. ZeroDivisionError(零除错误):当除法运算除数为零时会抛出此异常。 通过捕获处理这些内置异常,我们可以编写更加健壮和稳定的Python程序,提高程序的错误处理能力和可靠性。常见的处理异常的方法是使用try-except代码块,通过捕获异常并执行相应的处理代码,来避免程序因为异常而崩溃或产生意外结果。 ### 回答3: Python内置异常是一些在程序运行过程可能出现的错误情况。这些内置异常通过类的形式表示,每个内置异常都有一个特定的名称和对应的错误信息。 常见的Python内置异常包括: 1. ValueError:数值错误,例如将字符串转换为整数时遇到不能转换的字符。 2. TypeError:类型错误,例如对不支持的操作或函数传入错误的参数类型。 3. IndexError:索引错误,例如访问列表或字符串的不存在的索引。 4. KeyError:键错误,例如访问字典不存在的键。 5. AttributeError:属性错误,例如访问对象不存在的属性。 6. FileNotFounderror:文件不存在错误,例如尝试打开一个不存在的文件。 7. ImportError:导入错误,例如导入一个不存在的模块或包。 8. ZeroDivisionError:除零错误,例如在除法运算除数为零。 9. KeyboardInterrupt:键盘断错误,例如用户在程序运行过程按下了键盘断信号。 10. SyntaxError:语法错误,例如代码书写不符合Python语法规则。 当程序在运行过程发生这些异常时,Python会抛出相应的异常对象,并提供错误信息。我们可以使用try-except语句来捕捉处理这些异常,以防止程序突然终止并提高程序的可靠性。通过捕捉异常,我们可以根据具体情况采取相应的措施,例如输出错误信息、重新尝试或抛出新的异常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值