异常处理和IO操作

文章目录

  • 异常处理
    • 异常处理
    • 捕获指定异常
    • 查看 报错类型 ,获取报错类型并打印
    • 自定义 异常

异常处理

详细可以见官网:https://docs.python.org/zh-cn/3/tutorial/errors.html

异常处理

语法:
try:
可能出现异常的代码
except:
出现异常后要执行的操作
else:
不出现异常时执行的操作
finally:
无论是否出现异常都必须要执行的操作

如:默认捕获所有异常

tr:
    print('try即将执行...')
    # 注意 5/ 0 是错误语句
    a = 5 / 0 
except: #默认捕获所有异常
    print('try语句出现异常啦')
else:
    print('没有异常时输入该语句')
finally:
    print('finally')
	

异常处理和IO操作_第1张图片

捕获指定异常

就是说 你只想捕获某指定异常,其余异常运行错误。
如定义捕获上面的除数为0异常,如果不是该异常 则报错:

try:
    print('try即将执行...')
   # a = 5 / 0 #除数为0
    c = 5 / int('abc') #int转换类型作物
#except: #默认捕获所有异常
except ValueError:
    print('try语句出现异常啦')
else:
    print('没有异常时输入该语句')
finally:
    print('finally')

异常处理和IO操作_第2张图片

如 只捕获输出上面的 值报错(ValueError),正确输出

try:
    print('try即将执行...')
   # a = 5 / 0 #除数为0
    c = 5 / int('abc') #int转换类型作物
#except: #默认捕获所有异常
except ValueError:
    print('try语句出现异常啦')
else:
    print('没有异常时输入该语句')
finally:
    print('finally')

异常处理和IO操作_第3张图片

如果这时候 不是值类型报错,就会执行报错了。

  • 如果需要捕获多个异常
    expect ( ) ,每隔异常之间用逗号隔开。
try:
    print('try即将执行...')
   # a = 5 / 0 #除数为0
    c = 5 / int('abc') #int转换类型作物
#except: #默认捕获所有异常
except (ZeroDivisionError,ValueError):# 指定2个类型
    print('try语句出现异常啦')
else:
    print('没有异常时输入该语句')
finally:
    print('finally')

异常处理和IO操作_第4张图片

查看 报错类型 ,获取报错类型并打印

  • 查看 报错类型
    很简单,可以把变量放在 全局啊 !然后执行就直接报错了! 报错中就有类型。
    如:除数为0异常
    异常处理和IO操作_第5张图片

如:值错误

#b = 6/0
d = 6/int('a')
try:
    print('try即将执行...')
    a = 5 / 0 #除数为0
  #  c = 5 / int('abc') #int转换类型作物
#except: #默认捕获所有异常
except ZeroDivisionError:
    print('try语句出现异常啦')
else:
    print('没有异常时输入该语句')
finally:
    print('finally')

异常处理和IO操作_第6张图片

  • 获取异常类型并打印
    expect 异常 as 名称 / expect (异常1,异常2) as 名称
try:
    print('try即将执行...')
   # a = 5 / 0 #除数为0
    c = 5 / int('abc') #int转换类型作物
#except: #默认捕获所有异常
except ValueError as e: # 捕获ValueError异常,并获取到异常对象,e是自定义名称
    print('try语句出现异常啦')
    print('异常类型为:',e) #输出异常类型
else:
    print('没有异常时输入该语句')
finally:
    print('finally')

异常处理和IO操作_第7张图片

自定义 异常

可以见官网:https://docs.python.org/zh-cn/3/tutorial/errors.html
这里简单做一个实验。
先class 自定义一个异常
然后在函数中用 raise 调用即可。

# 自定义异常,继承自Exception(exception类是所有异常类的父类)
class Usernameonoroff(Exception):
    pass

def fn(username):
    if username == 'admin' or username == 'ccx' :
        # 使用 raise 抛出异常
        raise Usernameonoroff('用户名已存在')
    else:
        print('这儿放不存在后的代码快,如 创建之类的。。。')

# 调用fn 函数
fn(input('请输入用户名:'))
print('*'*50)
fn(input('请输入用户名:'))

异常处理和IO操作_第8张图片

你可能感兴趣的:(python,python,异常处理,pythonIO操作)