2023年11月29日发(作者:)

python3.8学习⼼得(4)异常处理

⼀、常见的内置异常

BaseException:所有异常的基类。

System Exit:Python解释器请求退出。

KeyboardInterrupt:⽤户中断执⾏。

TypeError:对类型⽆效的操作

ValueError:传⼊⽆效的参数。

UnicodeError:Unicode相关的错误。

UnicodeDecodeError:Unicode解码时的错误。

UnicodeEncodeError:Unicode编码时的错误。

UnicodeTranslateError:Unicode转换时的错误。

Warning:警告的基类。

DeprecationWarning:关于被弃⽤的特征的警告。

FutureWarning:关于构造将来语义会有改变的警告。

OverflowWarning:旧的关于⾃动提升为长整型(Long)的警告。

PendingDeprecationWarning:关于特性将会被废弃的警告。

def get(n):

try:

if n==100:

data=s[4]

elif 200<=n<=500:

file=open(100,200,300)

except:

print("有错误发⽣")

else:

print("没有错误发⽣")

get(100)

get(200)

try:

raise ValueError

finally:

print('异常已经清楚啦'

输出结果如下所⽰:

raise ValueError

valueError

六、抛出异常

使⽤raise语句可以抛出⼀个指定的异常。例如:

raise NameError('这⾥使⽤raise抛出⼀个异常

输出结果如下所⽰:

raise NameError('这⾥使⽤raise抛出⼀个异常

NameError:这⾥使⽤raise抛出⼀个异常

raise 唯⼀的⼀个参数指定了要被抛出的异常。它必须是⼀个异常的实例或异常的类(Exception的⼦类)。

值得注意的是:如果⽤户只想判断是否会抛出⼀个异常,⽽不想去处理它,那么此时使⽤raise语句是最佳的选择。

七、离开嵌套循环

我们知道,如果想离开循环,就使⽤break语句,但是如果在⼀个嵌套循环之内,break语句只能离开最内层的循环,⽽不能离开嵌套循

环,此时就可以使⽤raise语句离开嵌套循环。

⽰例如下:

class ExitLoop(Exception):

class URLError(Exception):

pass

try:

raise URLError("这是URL异常")

except URLError as inst:

print([0])

输出结果如下所⽰:

这是URL异常