“”"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
7、异常处理.py
“”"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
'''
try/except 相当于Java中的try/cach
try中是可能会发生异常的代码,except后接的是可能会发生的异常类型,except是发生异常后执行的代码
except 后接else 如果异常没有捕获到会执行else中的代码 ,后接finally 是否有异常都会执行,通常关闭流等操作使用
raise 触发异常 类似java中的throw 手动抛出异常
'''
try:
x = int(input("请输入一个数字: "))
except ValueError:
print("您输入的不是数字,请再次尝试输入!")
import sys
try:
f = open('hello.txt')
s = f.readline()
i = int(s.strip())
list = [1]
print(list[0]) # 造成角标越界异常
except OSError as err: # io异常
print("OS error: {0}".format(err))
except ValueError: # 值错误异常
print("Could not convert data to an integer.")
except: # 其他异常
print("Unexpected error:", sys.exc_info()[0])
raise
try:
list = [1]
# print(list[1])
print(list[0])
except IndexError as err: # 角标错误
print(err)
else:
print('未发生异常')
if x > 1:
print('输入的数字大于1了')
raise Exception('x 不能大于 1。x 的值为: {}'.format(x))
'''
自定义异常,在系统开发的时候,通常会定义一个异常配置类,来捕获全局异常,在逻辑判断的时候,声明这个变量类型,
这个配置类也可以完成异常的捕获操作,并且对异常信息的输出;
'''
from com.shp.dev.utils.Common import *
try:
raise MyError(2 * 2)
except MyError as e:
print('My exception occurred, value:', e.value)
com.shp.dev.utils.Common文件
#!/usr/bin/python3
# Filename: Common.py
def println(self):
print('\n', self, '\n')
# 判断是否是同一个模块调用
if __name__ == '__main__':
print('程序自身在运行')
else:
print('我来自另一模块')
class common():
def print_func(par):
print("Hello : ", par)
return
# 遍历打印 ----------------------------------------------------------
def forEach(list):
if len(list) > 10:
print('如果值大于10则抛出异常')
raise StopIteration
for l in list:
print(l, end=',')
# 包装你说的话 ----------------------------------------------------------
def packing(_):
return '越有内涵的人越虚怀若谷,像您这样有内涵的人说了句“' + _ + '”让我觉得非常有道理'
# 最大值 ----------------------------------------------------------
def max(self):
m = self[0]
for i in self:
if i > m: m = i
return m
# 最小值 ----------------------------------------------------------
def min(self):
m = self[0]
for i in self:
if i < m: m = i
return m
class MyError(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return repr(self.value)