zoukankan      html  css  js  c++  java
  • Python 错误和异常

    常见错误

    NameError--使用未定义的变量

    SyntaxError--语法错误,常见程序格式不对。如if a后没有:

    IOError--打开一个不存在的文件或文件

    ZeroDivisionError--除零错误,即分母为零

    ValueError--传入值无效,强制类型转换时产生。如a=int('dd')

    KeyboardInterrupt--键盘中断错误,强制终止程序时产生。

    错误

    语法错误:代码不符合解释器或者编译器语法

    逻辑错误:不完整或者不合法输入或者计算出现问题

    异常

    程序遇到逻辑或者算法问题

    运行过程中计算机错误(内存不够或IO错误)

    如果没有手动对异常进行处理,那么该异常就会被解释器捕获并处理,处理的方法为忽略或终止程序

    区别

    错误是非正常的,是根本不应该出现的,比如缩进字符

    异常是一种程序运行条件,而非严重错误,比如用户输入过大

    异常处理

    try/except

    异常捕捉可以使用 try/except 语句。

     实例:

    while True: try:
            x = int(input("请输入一个数字: "))
            break
        except ValueError:
            print("您输入的不是数字,请再次尝试输入!")

    #让用户输入一个合法的整数,但是允许用户中断这个程序(使用 Control-C 或者操作系统提供的方法)。用户中断的信息会引发一个 KeyboardInterrupt 异常。

    try/except...else

    try/except 语句还有一个可选的 else 子句,如果使用这个子句,那么必须放在所有的 except 子句之后。

    else 子句将在 try 子句没有发生任何异常的时候执行。

     实例:

    for arg in sys.argv[1:]:
        try:
            f = open(arg, 'r')
        except IOError:
            print('cannot open', arg)
        else:
            print(arg, 'has', len(f.readlines()), 'lines')
            f.close()

    #   try 语句中判断文件是否可以打开,如果打开文件时正常的没有发生异常则执行 else 部分的语句,读取文件内容

    try-finally 语句

    try-finally 语句无论是否发生异常都将执行最后的代码。

    实例:

    try:
        runoob()
    except AssertionError as error:
        print(error)
    else:
        try:
            with open('file.log') as file:
                read_data = file.read()
        except FileNotFoundError as fnf_error:
            print(fnf_error)
    finally:
        print('这句话,无论异常是否发生都会执行。')

    #finally 语句无论异常是否发生都会执行:

    抛出异常

    Python 使用 raise 语句抛出一个指定的异常。

    实例:

    x = 10
    if x > 5:
        raise Exception('x 不能大于 5。x 的值为: {}'.format(x))

    #如果 x 大于 5 就触发异常:

    用户自定义异常

    你可以通过创建一个新的异常类来拥有自己的异常。异常类继承自 Exception 类,可以直接继承,或者间接继承,

    实例:

    class MyError(Exception): def __init__(self, value):
                self.value = value
            def __str__(self):
                return repr(self.value)

    try:
            raise MyError(2*2)
        except MyError as e:
            print('My exception occurred, value:', e.value)

    raise MyError('oops!')

    输出结果:

    Traceback (most recent call last):
      File "<stdin>", line 1, in ?
    __main__.MyError: 'oops!'

     

     

     

     

     

  • 相关阅读:
    再谈TextField
    IOS-TextField知多少
    leftBarButtonItems
    LeftBarButtonItems,定制导航栏返回按钮
    Apple Mach-O Linker (id) Error "_OBJC_CLASS...错误解决办法 Apple Mach-O Linker (id) Error "_OBJC_CLASS...错误解决办法
    Unrecognized Selector Sent to Instance问题之诱敌深入关门打狗解决办法
    UNRECOGNIZED SELECTOR SENT TO INSTANCE 问题快速定位的方法
    Present ViewController,模态详解
    UILABEL AUTOLAYOUT自动换行 版本区别
    iOS自动布局解决警告Automatic Preferred Max Layout Width is not available on iOS versions prior to 8.0
  • 原文地址:https://www.cnblogs.com/HyzH/p/12059142.html
Copyright © 2011-2022 走看看