7、异常处理.py

“”"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

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)

上一篇:Python 异常处理-Python零基础入门教程


下一篇:Facebook开发人脸匹配软件 精度可与人媲美