何为异常:

python程序运行的过程中不可避免的会出错,当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。

捕获异常:

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

try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。

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

语法:

以下为简单的try….except…else的语法:

try:
  pass 
except:
  pass
except:
  pass
else:
  #如果没有异常发生
try:
  print(a)
 except NameError as e:
    print(e)
#name a is not defined

我们打印输出了一个未定义的变量a,except捕获到异常

我们在except来捕获多种异常:

except(Exception1 [,exception2 [,...Exception3]])

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

raise语法格式如下:

raise [Exception [, args [, traceback]]]

示例:

a =1
try:
    if a < 2:
      raise Exception('error')
except Exception as e:
    print(e)
#error

我们在if语句中触发了一个Exception,在except中我们捕获到了这个异常

我们可以自定义一个异常函数,满足条件时触发:

def checkLeve(lev):
  if lev < 1:
    raise Exception('level error')
    #触发异常后,后续代码不再执行
try:
  checkLeve(0)
except Exception as e:
  print(e)
else:
  print('ok')
# level error

自定义异常类,当满足条件时,捕获:

通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception类,通过直接或间接的方式。

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

在try语句块中,用户自定义的异常后执行except块语句,变量e是用于创建Networkerror类的实例。

class Networkerror(RuntimeError):
  def __init__(self,*args):
    self.args = args
try:
  raise Networkerror('bad hostname')
except Networkerror as e:
  print(e.args)
#('bad hostname',)

Leave Your Comment

电子邮件地址不会被公开。 必填项已用*标注