python 选择题异常处理_python3的异常处理

本文详细介绍了Python的异常处理机制,包括简单异常处理、多个异常一起处理、通用异常处理、使用else和finally、异常处理中抛出异常以及选择性抛出异常的方法。通过实例展示了如何在遇到异常时保持程序继续运行,并有效管理错误。
摘要由CSDN通过智能技术生成

在python运行的时候难免出现一些异常,但是python在遇到异常的时候就会停止了,但是有时候我们需要python即使在有异常的时候也需要继续向下运行,这个时候我们就需要用到异常处理了.

1.简单的异常处理如:

print(a)

Traceback (most recent call last):

File "", line 2, in

NameError: name 'a' is not defined

我们在没有定义变量a的时候它就会报错,报错是NameError

我们如何让他这样也继续运行下去呢?

运用下异常处理就行了!

try:

print(a)

except NameError:

print('NameError 意思就是没有这个变量啊')

NameError 意思就是没有这个变量啊

这样即使我们没有定义a这个变量,但是这个程序也能继续往下运行

2.多个异常一起处理:

try:

print(a)

lo

print('试一下异常之后的程序会不会被运行!')

except (NameError,SyntaxError) as eor:

print('这个的报错是: %s'%eor)

这个的报错是: name 'a' is not defined

这里没有定义a所以是NameError,这个异常处理也是有先后顺序的,如果在异常之后还有程序的话将不会被运行的

a='hello'

try:

print(a)

lo

print('试一下异常之后的程序会不会被运行!')

except (NameError,SyntaxError) as eor:

print('这个的报错是: %s'%eor)

hello

这个的报错是: name 'lo' is not defined

小结:

1.异常之后的程序不会被运行;

2.报错的信息可能一样,但是报错的类型是不一样的

如报错信息都是'name 'lo' is not defined' 但是一个是NameError,一个是SyntaxError

3.通用的异常处理

有的时候我们不知道这个程序会有什么报错,这个时候我们就需要用到Execption

这个是所有的报错都是它的子类,它就包括了所有的报错

try:

print(a)

except Exception as err:

print(err)

name 'a' is not defined

4.如果我们的程序没有异常就执行某个语句,用else

try:

print('a')

except NameError as err:

print('这个是NameError语法错误!')

except SyntaxError as err:

print('这个是SyntaxError语法错误!')

else:

print('这个没错!')

a

这个没错!

5.无论如何都会执行的finally

try:

print('hello')

except NameError:

print('这个是NameError!')

except SyntaxError:

print('这个是SyntaxError!')

finally:

print('我可不管是对是错我都会执行的!')

hello

我可不管是对是错我都会执行的!

6.异常处理中抛出的异常

这个的定义就是,程序在运行的过程中可能会出现的异常,我们对着异常进行处理之后(比如记录下来),然后再把这个异常正常的抛出来!

def exce(a,b):

try:

return a/b

except Exception as result:

print('我这里记录下了错误,错误是 --->%s'%result)

print('我这里直接抛出了异常')

raise

exce(5,0)

我这里记录下了错误,错误是 --->division by zero

Traceback (most recent call last):

我这里直接抛出了异常

File "C:/Users/huxia/Desktop/py_script/28/temp.py", line 427, in

exce(5,0)

File "C:/Users/huxia/Desktop/py_script/28/temp.py", line 422, in exce

return a/b

ZeroDivisionError: division by zero

如果我不抛出异常就没问题了

def exce(a,b):

try:

return a/b

except Exception as result:

print('我这里记录下了错误,错误是 --->%s'%result)

print('我这里直接抛出了异常')

#raise

exce(5,0)

我这里记录下了错误,错误是 --->division by zero

我这里直接抛出了异常

7.如果有的时候我们需要选择性的抛出异常可以这样写:

class startE:

def __init__(self,choose):

self.choose = choose

def exce(self,a,b):

try:

return a/b

except Exception as result:

if self.choose:

print('我这里记录下了错误,错误是 --->%s'%result)

else:

print('我这里直接抛出了异常')

raise

print('我这里要打印错误日志')

test = startE(True)

test.exce(5,0)

print('我不打印错误日志,我要抛出异常!')

test = startE(False)

test.exce(5,0)

这样我们如果不需要抛出异常就为True,如果我们要抛出异常就为False

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值