python 异常

Posted 微刻时光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 异常相关的知识,希望对你有一定的参考价值。

异常

# 异常处理
"""
Python 有两种错误很容易辨认:语法错误和异常
try/except
try/except...else
try-finally
raise [Exception [, args [, traceback]]]
"""

# try/except   异常捕捉
# 一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行
# 一个except子句可以同时处理多个异常,这些异常将被放在一个括号里成为一个元组
"""
except (RuntimeError, TypeError, NameError):
    pass
    
try:
    # 尝试执行的代码
    pass
except 错误类型1:
    # 针对错误类型1,对应的代码处理
    pass
except (错误类型2, 错误类型3):
    # 针对错误类型2 和 3,对应的代码处理
    pass
except Exception as result:
    print("未知错误 %s" % result)
"""
try:
    x = int(input("请输入一个数字: "))
except ValueError:
    print("您输入的不是数字,请再次尝试输入!")

# 捕获未知错误
"""
except Exception as result:
    print("未知错误 %s" % result)
"""

# try/except...else   使用这个子句,那么必须放在所有的 except 子句之后
# else 子句将在 try 子句没有发生任何异常的时候执行
# 使用 else 子句比把所有的语句都放在 try 子句里面要好,这样可以避免一些意想不到,而 except 又无法捕获的异常
try:
    f = open(arg, r)
except IOError:
    print(cannot open, arg)
else:
    print(arg, has, len(f.readlines()), lines)
    f.close()

# try-finally 语句  无论是否发生异常都将执行最后的代码
def runoob():
    pass
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(这句话,无论异常是否发生都会执行。)

# 抛出异常  raise [Exception [, args [, traceback]]]
# raise 唯一的一个参数指定了要被抛出的异常。它必须是一个异常的实例或者是异常的类(也就是 Exception 的子类)
x = 10
if x > 5:
    raise Exception(x 不能大于 5。x 的值为: {}.format(x))

# 用户自定义异常
# 你可以通过创建一个新的异常类来拥有自己的异常。异常类继承自 Exception 类,可以直接继承,或者间接继承
class MyError(Exception):
    def __init__(self, value):
        self.value = value

    def __str__(self):
        return repr(self.value)

# with 关键词 with 语句就可以保证诸如文件之类的对象在使用完之后一定会正确的执行他的清理
# 文件 f 总是会关闭
with open("myfile.txt") as f:
    for line in f:
        print(line, end="")

# 异常的传递
"""
在开发中,可以在主函数中增加 异常捕获
而在主函数中调用的其他函数,只要出现异常,都会传递到主函数的 异常捕获 中
这样就不需要在代码中,增加大量的 异常捕获,能够保证代码的整洁
"""

 

以上是关于python 异常的主要内容,如果未能解决你的问题,请参考以下文章

片段中的Android致命异常

mvn命令异常:An error has occurred in Javadoc report generation: Unable to find javadoc command异常已解决(代码片段

mvn命令异常:An error has occurred in Javadoc report generation: Unable to find javadoc command异常已解决(代码片段

springcloud报错-------关于 hystrix 的异常 FallbackDefinitionException:fallback method wasn't found(代码片段

片段中的getView()导致抛出异常,不确定原因

片段中的 EditText 上的空指针异常 [重复]