异常处理

Posted dangrui0725

tags:

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

# 异常处理
# 常见异常
# SyntaxError 语法错误
# AttributeError 试图访问一个对象没有的属性
# IOError 输入/输出异常;基本上是无法打开文件
# ImportError 无法引入模块或包;基本上是路径问题或名称错误
# IndentationError 语法错误的子类;代码没有正确对齐
# IndexError 下标索引超出序列边界
# KeyError 试图访问字典中不存在的key
# KeyboardInterrupt Ctrl+c被按下
# NameError   使用一个还未被赋予对象的变量
# TypeError 传入的对象类型与要求不符合
# UnboundLocalError 试图访问一个还未被设置的局部变量 ,基本上是由于有另一个同名的全局变量,导致你以为正在访问它
# ValueError  传入一个调用者不期望的值,即使值的类型是正确的

# 异常处理的基本语法
# try:
#     被检测的代码块
# except 异常类型:
#     异常类型与异常一样,就执行这个位置的逻辑
# except 异常类型:       上面的异常类型没有再找这里的异常类型
#     异常类型与异常一样,就执行这个位置的逻辑
# ……
# else:
#     当try内代码没有异常时会执行这个位置的逻辑
# finally:
#     无论异常与否,都会执行这个位置的逻辑

s1 = hello

try:
    int(s1)
except IndexError as e:
    print(e)
except ValueError as e:
    print(e)
except TypeError as e:
    print(e)

# 万能异常类型 Exception

s1 = hello

try:
    int(s1)
except Exception as e:
    print(e)

# 主动触发异常

try:
    raise TypeError(类型错误)
except Exception as e:
    print(e)

# 自定义异常
class MyException(BaseException):       # 自定义异常必须继承BaseException类
    def __init__(self, msg):
        self.msg = msg

try:
    raise MyException(自定义异常)
except MyException as e:
    print(e)

# 断言  在程序的某个位置判断一下结果是不是想要的值,如果不是想要的值就抛出一个异常
assert 1 == 1    # 有点类似于if,如果等式成立,执行它下面的代码

# assert 1 == 2   # 如果等式不成立,抛出一个AssertionError的异常

 

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

使用片段中的处理程序时出现非法状态异常

Java异常处理机制

java 反射代码片段

java.util.MissingResourceException: Can't find bundle for base name init, locale zh_CN问题的处理(代码片段

使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段

片段中的Android致命异常