python中异常处理的两种方式,python处理异常的4种方式

  python中异常处理的两种方式,python处理异常的4种方式

  目录1。什么是例外?2.python标准异常3。异常处理3.1 try/except 3.2 try-finally语句3.3异常4的参数。触发异常4.1引发4.2用户定义的异常

  1.什么是异常?异常是一个事件,它会在程序执行过程中发生,影响程序的正常执行。

  一般来说,当Python不能正确处理程序时,就会出现异常。

  是一个异常Python对象,表示有错误。

  当Python脚本出现异常时,我们需要捕捉并处理,否则程序会终止执行。

  Python提供了两个非常重要的函数来处理python程序运行中的异常和错误。您可以使用这个函数来调试python程序。

  异常处理断言

  2.python标准异常BaseException所有异常的基类

  系统退出请求的退出解释程序。

  键盘中断用户中断执行(通常输入C)

  异常一般错误基类

  StopIteration迭代器没有更多值。

  GeneratorExit生成器(generator)有一个异常通知退出。

  错误标准的所有内置标准异常的基类。

  算术错误是所有数值计算错误的基类。

  浮点错误浮点计算错误

  溢出错误数值运算超过最大限制。

  ZeroDivisionError除以(或模)零(所有数据类型)

  AssertionError断言语句失败。

  错误对象没有此属性。

  EOFError没有内置输入,达到eof标志。

  Error环境错误操作系统错误的基类。

  IOError I/o操作失败。

  操作系统错误

  WindowsError系统调用失败。

  ImportError无法导入模块/对象。

  lookup错误数据查询的基类无效

  错误序列中没有这样的索引(index)

  键映射中没有键。

  内存内存溢出错误(对Python解释器不致命)

  NameError对象未声明/初始化(无属性)

  UnboundLocalError访问未初始化的局部变量。

  错误弱引用错误试图访问已被垃圾收集的对象。

  错误运行时常规运行时错误

  NotImplementedError尚未实现该方法。

  语法错误Python语法错误

  缩进错误缩进错误

  制表符错误制表符与空格混合

  错误通用解释器系统错误

  TypeError对类型的操作无效。

  传入无效参数的错误。

  错误Unicode错误Unicode相关错误

  Unicode解码中的UnicodeDecoderError错误

  Unicode encoding错误Unicode编码

  UnicodeTranslateError Unicode转换错误

  警告警告的基类。

  弃用警告关于弃用功能的警告

  FutureWarning对建筑未来语义变化的警告。

  溢出警告关于自动提升为long的旧警告。

  PendingDeprecationWarning警告将放弃该功能

  可疑运行时行为的警告。

  语法警告可疑语法的警告

  用户警告由用户代码生成的警告

  找不到FileNotFoundError文件。

  3.异常处理

  3.1 try/except捕捉异常可以使用try/except语句。

  try/except语句用于检测try语句块中的错误,以便except语句可以捕获异常信息并对其进行处理。

  如果你不想在异常发生时结束你的程序,只需在try中捕捉它。

  语法:

  下面的语法很简单try…except…else:

  尝试:

  语句#运行其他代码

  除了名称:

  语句#如果在try部分引发了“name”异常

  除了名称,数据:

  语句#如果抛出“名称”异常,则获取附加数据

  否则:

  语句#如果没有异常,try的工作原理是,当一个try语句启动时,python会在当前程序的上下文中对其进行标记,这样在出现异常时就可以回到这里。首先执行try子句,接下来会发生什么取决于执行过程中是否出现异常。

  如果在执行try之后的语句时出现异常,python会跳回到try并执行第一个与异常匹配的except子句。处理异常时,控制流会通过整个try语句(除非在处理异常时引发了新的异常)。

  如果在try之后的语句中出现异常,但是没有匹配的except子句,那么异常将被提交到上一级try或者程序的顶部(这将结束程序并打印默认的错误信息)。

  如果执行try子句时没有出现异常,python将在else语句之后执行该语句(如果有else的话),然后通过整个try语句控制流程。

  例子

  下面是一个简单的例子,它打开一个文件,文件中的内容无一例外地被写入:

  #!/usr/bin/python

  # -*-编码:UTF-8 -*-

  尝试:

  fh=open(testfile , w )

  Fh.write(这是一个测试异常的测试文件!)

  除了IOError:

  “打印”错误:文件未找到或无法读取

  否则:

  打印“内容成功写入文件”

  fh.close()

  上面的程序输出结果:

  $ python test.py

  成功写入内容文件。

  $ cat testfile #查看已写入的内容

  这是一个测试异常的测试文件!下面是一个简单的例子。它打开一个文件,文件中的内容被写入,但是该文件没有写权限,并且发生异常:

  #!/usr/bin/python

  # -*-编码:UTF-8 -*-

  尝试:

  fh=open(testfile , w )

  Fh.write(这是一个测试异常的测试文件!)

  除了IOError:

  “打印”错误:文件未找到或无法读取

  否则:

  打印“内容成功写入文件”

  fh.close()

  在执行代码之前,为了方便测试,我们可以先去掉testfile文件的写权限。该命令如下所示:

  chmod -w测试文件

  然后执行上面的代码:

  $ python test.py

  错误:找不到文件或无法读取文件。使用不带任何异常类型的except。

  您可以在没有任何异常类型的情况下使用except,如下例所示:

  尝试:

  正常运算

  ...

  除了:

  异常发生时,执行此代码。

  ...

  否则:

  如果执行这段代码没有异常,上面提到的try-except语句将捕获所有发生的异常。但这并不是一个好办法,我们也无法通过这个程序识别出具体的异常信息。因为它捕捉所有异常。

  将except与多个异常类型一起使用。

  还可以使用同一个except语句来处理多个异常消息,如下所示:

  尝试:

  正常运算

  ...

  Exception1[,Exception2[,异常]]):

  发生上述异常之一时,执行以下代码。

  ...

  否则:

  如果该代码没有异常执行

  3.2 try-finally语句try-finally语句将执行最后一段代码,不管是否出现异常。

  尝试:

  句子

  最后:

  语句#总是在退出try时执行

  提升实例

  #!/usr/bin/python

  # -*-编码:UTF-8 -*-

  尝试:

  fh=open(testfile , w )

  Fh.write(这是一个测试异常的测试文件!)

  最后:

  “打印”错误:文件未找到或无法读取

  #如果打开的文件没有可写权限,输出如下:

  $ python test.py

  错误:找不到文件或无法读取文件的相同示例也可以写成如下形式:

  #!/usr/bin/python

  # -*-编码:UTF-8 -*-

  尝试:

  fh=open(testfile , w )

  尝试:

  Fh.write(这是一个测试异常的测试文件!)

  最后:

  打印“关闭文件”

  fh.close()

  除了IOError:

  当try块中抛出异常时,finally块代码立即执行。

  执行完finally块中的所有语句后,将再次触发异常,并执行except块代码。

  参数的内容与异常不同。

  3.3异常的参数一个异常可以有参数,可以作为异常信息输出的参数。

  您可以通过except语句捕获异常参数,如下所示:

  尝试:

  正常运算

  ...

  ExceptionType除外,参数:

  您可以在这里输出参数的值.变量收到的异常值通常包含在异常语句中。变量可以接收一个或多个元组形式的值。

  元组通常包含错误字符串、错误号和错误位置。

  例子

  以下是单个异常的示例:

  #!/usr/bin/python

  # -*-编码:UTF-8 -*-

  #定义函数

  def temp_convert(var):

  尝试:

  return int(var)

  除了值错误,参数:

  “Print”参数不包含数字\n”参数

  #呼叫功能

  temp _ convert( XYZ );

  以上程序结果如下:

  $ python test.py

  参数不包含数字。

  基数为10的int()的文本无效:“xyz”

  4.触发异常

  4.1 raise我们可以自己使用raise语句来触发异常。

  raise语法格式如下:

  raise [Exception [,args [,traceback]]语句中的exception是exception(例如NameError)参数标准异常的类型之一,args是其自身提供的异常参数。

  最后一个参数是可选的(实践中很少使用)。如果存在,就是追踪异常对象。

  例子

  异常可以是字符串、类或对象。Python内核提供的大多数异常都是实例化的类,它们是类实例的参数。

  定义异常非常简单,如下所示:

  定义函数名称(级别):

  如果级别1:

  引发异常(“无效级别!”,级别)

  #异常触发后,下面的代码不会再执行。注意:为了捕捉异常,“except”语句必须抛出具有相同异常的类对象或字符串。

  例如,如果我们捕获上述异常,则“except”语句如下:

  尝试:

  正常逻辑

  例外情况除外,错误:

  触发自定义异常

  否则:

  其他代码示例

  #!/usr/bin/python

  # -*-编码:UTF-8 -*-

  #定义函数

  def mye(级别):

  如果级别1:

  引发异常,“无效级别!”

  #异常触发后,下面的代码不会再执行。

  尝试:

  Mye(0) #触发异常

  例外情况除外,错误:

  打印1,错误

  否则:

  打印2

  执行上面的代码,输出结果是:

  $ python test.py

  1无效级别!

  4.2用户定义的异常通过创建新的异常类,程序可以命名自己的异常。异常应该直接或间接地从异常类继承。

  下面这个与RuntimeError相关的实例,在实例中创建了一个类,基类是RuntimeError,用来在触发异常时输出更多的信息。

  在try语句块中,用户定义的异常后跟except block语句,变量E用于创建Networkerror类的实例。

  类网络错误(RuntimeError):

  def __init__(self,arg):

  self.args=arg

  #在定义了上面的类之后,可以按如下方式触发异常:

  尝试:

  引发网络错误(“错误的主机名”)

  除了网络错误,e:

  打印参数

  来自

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: