首页 > 编程知识 正文

python界面,手机运行python

时间:2023-05-06 08:34:25 阅读:34649 作者:3474

一.什么是异常

异常是指运行程序时发生错误的信号。 (如果程序发生错误,则会发生异常;如果程序未处理该异常,则会抛出该异常,程序也将终止运行。 )在python上,发生错误的异常如下所示。

1、错误类型

语法错误:这一错误,经不起python解释器的语法检测,必须在程序运行前纠正

#语法错误示范一if#语法错误示范二

def test:

传球

#语法错误演示三类函数

传球

#语法错误演示4

打印(helloword

视图代码

逻辑错误

#TypeError:int型不可重复for i in 3:

传球

#值错误

键入num=input(: ) ) Helloint

#NameError

aaa

#索引错误

l=['aa ',' bb']

l[3]

#密钥错误

dic={'name': '感动的朋友' }

dic['age']

# attributeerrorclassfoo 3360 pass

Foo.x

#ZeroDivisionError:无法完成计算

res1=1/0res2=1 'str '

视图代码

2、异常种类

常用异常

AttributeError试图访问不在对象中的树,如foo.x,但foo没有属性x

IOError输入输出异常; 基本上不能打开文件

ImportError无法部署模块或软件包; 基本上是路径问题或名字错了

IndentationError语法错误(的子类); 代码未正确对齐

索引错误下标的索引超出了序列边界。 例如,x中只有3个要素却试图访问x[5]

KeyError试图访问词典中不存在的密钥

keyboard中断ctrl c已按下

NameError使用未分配给对象的变量

SyntaxError Python代码不正确,代码无法编译(我个人认为这是语法错误,写错了)。

TypeError接收对象类型和要求不匹配

UnboundLocalError之所以尝试访问尚未设置的局部变量,基本上是因为还有另一个同名的全局变量。

我以为你在访问那个

即使值类型正确,ValueError也会传递调用方不期望的值

视图代码

更多异常

ArithmeticError

评估错误

属性错误

基本执行

缓冲器错误

字节警告

复制警告

环境错误

Eof错误

执行

浮动点

财富警告

发生器退出

ImportError

导入警告

索引错误

索引错误

IO错误

keyboard中断

密钥错误

Lookup错误

内存错误

名称错误

NotImplementedError

操作系统错误

溢出错误

PendingDeprecationWarning

参考错误

运行时错误

运行时间警告

标准错误

停止迭代

syntax错误

同步警告

系统错误

系统退出

tab错误

类型错误

Un

boundLocalError

UnicodeDecodeError

UnicodeEncodeError

UnicodeError

UnicodeTranslateError

UnicodeWarning

UserWarning

ValueError

Warning

ZeroDivisionErro

View Code

二、异常处理

1、如果错误发生的条件是可预知的,我们需要用if进行处理:在错误发生之前进行预防

num=10

whileTrue:

age=input('>>:').strip()ifage.isdigit(): #只有在age为字符串形式的整数时,下列代码才不会出错,该条件是可预知的

age=int(age)if age ==num:

print('666')break

View Code

2、如果错误发生的条件是不可预知的,则需要用到try...except:在错误发生之后进行处理

#基本语法为try:

被检测的代码块

except 异常类型:

try中一旦检测到异常,就执行这个位置的逻辑

#举例try:

f=open('a.txt')

g=(line.strip() for line inf)

print(next(g))

print(next(g))

print(next(g))

print(next(g))

print(next(g))

except StopIteration:

f.close()

View Code

3、try...except类型

①单分支:异常类只能用来处理指定的异常情况,如果非指定异常则无法处理

s1 = 'hello'

try:int(s1)

except IndexErrorase: # 未捕获到异常,程序直接报错

print e

View Code

②多分支:如果你对错误原因需要进行不同分流或者程序处理

s1 = 'hello'

try:int(s1)

except IndexErrorase:

print(e)

except KeyErrorase:

print(e)

except ValueErrorase:

print(e

View Code

③万能异常Exception:如果对错误原因不关心,只是想不让其报错,那么程序中你就用万能处理

s1 = 'hello'

try:int(s1)

except Exceptionase:

print(e)

View Code

④多分支异常与万能异常:对某些错误需要进行分流处理,剩下的错误直接跳过

s1 = 'hello'

try:int(s1)

except IndexErrorase:

print(e)

except KeyErrorase:

print(e)

except ValueErrorase:

print(e)

except Exceptionase:

print(e)

View Code

⑤其它异常:如果出现异常 就不会走else逻辑,不出现异常,则执行else逻辑

try:

print('二狗 向 脸哥转了 200元')

name

print('脸哥确认收到了 200元')

except NameError:

print('name is not defined')else:

print('转账成功')

print(666)

View Code

⑥try except else finally:无论报不报错都执行,如果报错,finally是在报错之前执行的!!!

try:

print('二狗 向 脸哥转了 200元')

name

print('脸哥确认收到了 200元')

except KeyError:

print('name is not defined')

#

#else:

# print('转账成功')

#finally:

print(666)

View Code

⑦主动抛出异常

try:

raise TypeError('类型错误')

except Exceptionase:

print(e)

View Code

⑧自定义异常

classPhoneConnectionError(BaseException):

passtry:

raise PhoneConnectionError('类型错误')

except PhoneConnectionError:

print('手机连接出现问题')

View Code

⑨断言:assert 条件

assert 1 == 1assert1 == 2

View Code

三、什么时候用异常处理

1、首先try...except是附加给你的程序的一种异常处理的逻辑,与你的主要的工作是没有关系的,这种东西加的多了,会导致你的代码可读性变差

2、只有在错误发生的条件无法预知的情况下,才应该加上try...except

3、有的同学会这么想,学完了异常处理后,好强大,我要为我的每一段程序都加上try...except,坚决不允许……

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。