Python基础知识(九)—— 异常

本文深入探讨了异常处理机制,包括异常定义、语法、try-except结构、异常参数、触发异常的raise语句以及自定义异常的创建。通过实例演示了如何有效捕获和处理异常,确保程序稳定运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异常

定义

  • 异常是指程序中的例外,违例,影响程序正常执行的情况
  • 异常机制是指程序出现错误后,程序的处理方法
  • 不处理异常,程序中止

语法

try:
	<语句>#可能发生异常的代码
except<名字>:
	<语句>#如果在try部份引发了'name'异常
except<名字> as <异常参数>:
	<语句>#如果引发了‘name’异常,获得附加的异常对象
else: 
	<语句>#如果没有异常发生

try-except

  • 不带参数的try- except语句捕获所有发生 的异常
import sys
try :
	n= 0
	print (10 / n) 
except:
	print ("做除法时发生异常!")

try-except(Exception1[,Exception2[,…ExceptionN]]])

  • 可以使用一个except语句来处理多个类型 异常,也可以针对不同的异常 ,分别写一个except语句
try:
	fp = open('t.txt','r')
	content=fp.read()
	fp.close()
except IOError:
	print('读取文件时,发生IOerror 异常!')
else:
	print('文件读取成功')
	print(content)

try-finally/else

  • 在try块中抛出一个异常,程序会立即执行finally块代码(如果有的话)
  • 当finally 块中的所有代码被执行结束后,异常才会被再次提出,并执行except块代码
  • finally和else语句块可以同时存在。如果发生异常只执行finally语句块,否则两语 句块都会执行
import sys
try:
	s=input('Enter something-->')
except KeyboardInterrupt:
	print('\nwhy did you do an Ctrl+c on me?')
	sys.exit()
except:
	print('\nSome error/exception occurred.')
else:
	print('no exception occur!')
finally:
	print('finally is executed!')

try-finally

try:
	fp=open('a.txt','r')
	try:
		content=fp.read()
		print(content)
	finally:
		print('关闭文件')
		fp.close()
except IOError:
	print('Error:没有找到文件或读取文件失败')
	

异常参数

语法
try-except ExecptionType,argument

  • 一个异常可以带上参数,可作为输出的异常信息参数。通过except语句来捕获异 常的参数
  • 异常参数接收的异常值通常包含在异常的语句中。在元组的表单中变量可以接收 一个或者多个值。元组通常包含错误字符串,错误数字,错误位置
try:
	fp=open('c.txt','r')
	try:
		content=fp.read()
	finally:
		fp.close()
except Exception as e:
	print('文件读取失败')
	print('打印异常信息')
	print(e)

raise 触发异常

语法:
raise[SomeExcpetion[, args [, traceback]]]

  • SomeExcpetion:是一个异常的类型,如NameError,可选;
  • args:是一个异常参数值,通常为元组,可选,如果不提供为“None”。
  • traceback:可选的,实际很少用,如果存在,是跟踪异常对象。
  • 如果有 其他参数(arg 或traceback),就必须提供SomeExcpetion
import traceback
try:
	value=input('请输入一个整数:')
	if not value.isdigit():
		raise ValueError('not a int')
except ValueError as e:
	print('值错误:',e)		

自定义异常

class Networkerror(RuntimeError):
	def __init__(self,value):
		self.value = value
try:
	raise Networkerror('bad hostname')
except Networkerror as e:
	print('My exception occured,value',e.value)
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值