python教程(八)之异常(4.异常类)

1.和创建普通类一样,使用class,但其必须直接或间接继承Exception

class SomeClass(Exception) :
    name:""
    def get_error(self,error) :
        print(error)
a=SomeClass()
try :
    1/0
except Exception as e:
    a.get_error(e)
# E:\python项目\基础训练>E:/Anaconda/python.exe e:/python项目/基础训练/8.异常-4.异常类.py
# division by zero

#try except是典型对异常捕捉的一种方式,如果try中的代码能够正常执行,就不会执行except,如果出现异常,就会执行except的代码
#except Exception as e是一种能够获取任何异常的方法,错误信息就是e

2.except可以使用多次

try :
    1/0
except ValueError :
    print("其类型正确但包含的值不合适")     
except ZeroDivisionError :
    print("除法或求模运算的第二个参数为零")
# 除法或求模运算的第二个参数为零    

#except 异常类 这种方式可以在只有这种异常时才会执行except中的代码,其他未定义或未触发的异常不会执行except的代码
#如果不想使用这么多个except的方式,可以用except (异常1,异常2……)这种方式

3.之前说过raise可以引发异常,有时候我们就是需要它引发指定的异常

try :
    1/0
except ZeroDivisionError :
    raise OSError    
# Traceback (most recent call last):
#   File "e:/python项目/基础训练/8.异常-4.异常类.py", line 19, in <module>
#     1/0
# ZeroDivisionError: division by zero

# During handling of the above exception, another exception occurred:

# Traceback (most recent call last):
#   File "e:/python项目/基础训练/8.异常-4.异常类.py", line 21, in <module>
#     raise OSError
# OSError

#可以看到,异常信息中不仅包含了真正的错误信息,还包含了实际上并没有引发错误的OSError
#如果你需要在某些异常后输出你想要的异常结果,并终止程序,则可以使用类似方法

4.不过你也可以使用raise 异常 from None来直接屏蔽其他异常,只输出你想要的异常、

try :
    1/0
except ZeroDivisionError :
    raise OSError from None 
# Traceback (most recent call last):
#   File "e:/python项目/基础训练/8.异常-4.异常类.py", line 50, in <module>
#     raise OSError from None
# OSError
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当我们编写代码时,可能会遇到各种错误。而这些错误可以分为两种类型:语法错误和异常。语法错误是指代码不符合 Python 的语法规则,导致 Python 解释器无法执行代码。而异常则是指代码在执行过程中出现了错误,导致程序无法继续执行。 Python 提供了一种叫做“异常处理”的机制来处理异常异常处理可以让我们在代码出现异常时,捕获异常并进行处理,从而避免程序崩溃或者出现不可预知的错误。下面是一个简单的异常处理的例子: ```python try: a = 5 / 0 except ZeroDivisionError: print("除数不能为零!") ``` 在这个例子中,我们试图计算 5 除以 0 的结果,这显然是不合法的,会导致 ZeroDivisionError 异常。我们使用 try 和 except 关键字来捕获这个异常,并在 except 块中打印出一个错误信息。 在实际的开发中,我们可能会碰到多种不同的异常类型,因此我们可以使用多个 except 块来捕获不同的异常类型。除此之外,我们还可以使用 finally 块来定义无论是否有异常都要执行的一些代码,比如关闭文件等操作。 下面是一个更加完整的异常处理的例子: ```python try: f = open("test.txt", "r") a = 5 / 0 f.close() except ZeroDivisionError: print("除数不能为零!") except FileNotFoundError: print("文件不存在!") finally: f.close() ``` 在这个例子中,我们首先试图打开一个不存在的文件,这会导致 FileNotFoundError 异常。然后我们试图计算 5 除以 0 的结果,这会导致 ZeroDivisionError 异常。最后,我们在 finally 块中关闭文件。 需要注意的是,在实际的开发中,我们应该尽量避免使用 try 和 except 来掩盖程序中的错误。正确的方式应该是在编写代码时,尽可能地考虑到所有可能出现的错误,并在代码中进行处理,以保证程序的稳定和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值