python之异常处理,断言和反射

1、异常基础

python在运行过程中,程序解释机制会测试代码,如检测不通过则会抛出异常。

try:
    aa = 10
    bb = ‘10‘
    cc = aa + bb
except Exception as e:
    print(‘error:‘,e)

#output输出异常,数字不能与字符向加
error: unsupported operand type(s) for +: ‘int‘ and ‘str‘
try:    aa = 10    bb = ‘10‘    cc = aa + bbexcept TypeError as e:    print(‘错误信息;‘,e)

回到顶部

2、异常种类

python中的异常种类非常多,每个异常专门处理某个项的异常!

AttributeError     试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
IOError            输入/输出异常;基本上是无法打开文件
ImportError        无法引入模块或包;基本上是路径问题或名称错误
IndentationError   语法错误(的子类) ;代码没有正确对齐
IndexError         下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError            试图访问字典里不存在的键
KeyboardInterrupt   Ctrl+C被按下
NameError           使用一个还未被赋予对象的变量
SyntaxError         Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
TypeError           传入对象类型与要求的不符合
UnboundLocalError   试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它
ValueError          传入一个调用者不期望的值,即使值的类型是正确的

s1 = ‘hello‘
try:
    int(s1)
except KeyError as e:
    print(‘键错误‘)
except IndexError as e:
    print(‘索引错误‘)
except TypeError as e:
    print(‘类型错误‘)
except ValueError as e:
    print(‘值的类型错误‘)
except Exception as e:
    print(‘错误‘)

回到顶部

3、异常的结构

try:# 主代码块

  pass

except KeyError as e:# 异常时,执行该块

   pass

else:# 主代码块执行完,执行该块

   pass

finally: # 无论异常与否,最终执行该块

   pass

回到顶部

4、自定义异常

class MyException(Exception):

    def __init__(self, msg):
        self.message = msg

    def __str__(self):
        return self.message

try:
    raise MyException(‘我的异常‘)  #raise为主动触发异常
except MyException as e:
    print(‘>>>:‘,e)

回到顶部

5、断言

assert断言是声明其布尔值必须为真的判定,如果发生异常就说明表达示为假。可以理解assert断言语句为raise-if-not,用来测试表示式,其返回值为假,就会触发异常

assert 1 == 1
print(‘---------------‘)
assert 1 == 2

#output,如果为真时不输出信息,如果为假时Flase则直接抛出异常
---------------
Traceback (most recent call last):
  File "Z:/python_project/day18/ddd/yichang.py", line 26, in <module>
    assert 1 == 2
AssertionError

回到顶部

6、反射

python中的反射功能是由以下四个内置函数提供:hasattr、getattr、setattr、delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员、获取成员、设置成员、删除成员。

class A(object):
    def __init__(self):
        self.name = ‘python‘
        self.age = 18

    def func(self):
        return self.age

obj1 = A()

#检查对象是否含有成员
print(hasattr(obj1,‘age‘)) #True
print(hasattr(obj1,‘func‘)) #True

#获取对象成员
print(getattr(obj1,‘name‘)) #python
print(getattr(obj1,‘func‘))  #<bound method A.func of <__main__.A object at 0x000000C0C7B9D048>>

#设置对象成员
setattr(obj1,‘slary‘,9999)
print(getattr(obj1,‘slary‘)) #9999

#删除成员
delattr(obj1,‘slary‘)
print(hasattr(obj1,‘slary‘)) #False

结论:反射是通过字符串的形式操作对象相关的成员

class A(object):
    def __init__(self):
        self.name = ‘python‘
        self.age = 18

    def func(self):
        print(‘func:‘,self.name)
        return self.age

obj1 = A()

#通过获取对象的方法来执行对象方法
obj = A()
fun = getattr(obj,‘func‘)
fun()

原文地址:https://www.cnblogs.com/mjc69213/p/9937706.html

时间: 2024-11-09 01:57:28

python之异常处理,断言和反射的相关文章

9.python之异常处理

一.python中的错误与异常. 先来说说什么是错误. 在python中错误分为两种 语法错误这种语法错误根本过不了python解释器下面这几种就属于语法错误. 例1: if 输出 File "/Users/macbook/PycharmProjects/untitled1/作业2/test2.py", line 1 if ^ SyntaxError: invalid syntax 例2: def test: pass 例3: class Foo pass 以上这些都是语法错误 2 .

(Python)异常处理try...except、raise

转载自https://www.cnblogs.com/Lival/p/6203111.html (Python)异常处理try...except.raise 一.try...except 有时候我们写程序的时候,会出现一些错误或异常,导致程序终止.例如,做除法时,除数为0,会引起一个ZeroDivisionError 例子: ? 1 2 3 4 a=10 b=0 c=a/b print "done" 运行结果: Traceback (most recent call last): Fi

python的异常处理及异常类定义

python的异常处理语法和大多数语言相似: try: try块的语句... except exceptiontype1 as var:#使用as语句获得本次捕获到的异常的实例var except块语句... except exceptiontype2 as var: except块语句... except: except块语句... else: else块语句... finally: finally块语句... 执行的流程分两类: 1.try->若有异常发生->except->fina

what&#39;s the python之异常处理

what's the 异常 python程序中会出现异常,即bug.若出现异常程序就报错,异常之后的代码就不会继续往下执行,这是一个正常程序不允许出现的,但是在某些程序交互的时候难免会因为用户输入问题产生异常,这个时候我们就要在程序中加入异常处理的代码来防止因为产生异常而使我们的程序崩溃的情况发生. 异常即错误,错误分两种,一种为语法错误,一种为逻辑错误. 语法错误:程序员在编写代码时因为操作不当产生的错误,此时产生的异常都是相当低级的,处理异常的方式就是人为的手动改正.在编写程序的时候我们一定

Python之异常处理、模块与包

MarkdownPad Document 错误与异常处理 程序中错误分成两种 语法错误:过不了Python解释器 逻辑错误 异常处理 什么是异常处理 Python解释器检测到错误,触发异常,在发生异常时捕捉异常,如果捕捉成功则进入另外一个处理分支,是程序不会崩溃,这就是异常处理 异常处理机制就是来增强程序的健壮性与容错性 常用异常 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x IOError 输入/输出异常:基本上是无法打开文件 ImportEr

python 学习 异常处理

异常处理实例 while True: num1 = input('num1:') num2 = input('num2:') try: num1 = int(num1) num2 = int(num2) result = num1 + num2 except Exception as ex: print('出现异常,信息如下:') print(ex) 异常处理类型 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x IOError 输入/输出异常:基本

18.python的异常处理

python中至少包括两种错误:语法错误(syntax errors)和异常(exceptions). 1.语法错误   语法错误,也被称作解析错误 语法分析器指出错误行,并且在检测到错误的位置前面显示一个小“箭头”. 错误是由箭头前面的标记引起的(或者至少是这么检测的).错误会输出文件名和行号,所以如果是从脚本输入的你就知道去哪里检查错误了. 2.异常 即使一条语句或表达式在语法上是正确的,当试图执行它时也可能会引发错误. 运行期检测到的错误称为异常.此时会停止代码的执行,而大多数异常是并没有

Python - - 函数 - - 异常处理

目录 1,错误和异常 2,异常处理 2.1 什么是异常处理? 2.2 为何要进行异常处理? 2.3 如何进行异常处理? 3,什么时候用异常处理 4,本章小结 1,异常和错误 1.1 程序中难免出现错误,而错误分成两种 1.1.1. 语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) #语法错误示范一 if #语法错误示范二 def test: pass #语法错误示范三 print(haha) 1.1.2. 逻辑错误(逻辑错误) #用户输入不完整(比如输入为空)

python学习——异常处理

在学习异常处理之前,先来了解一下异常和错误的关系. 一.什么是错误 1.语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正)?? 1 #语法错误示范一 2 if 3 4 #语法错误示范二 5 def test: 6 pass 7 8 #语法错误示范三 9 print(haha 10 11 #语法错误示范四 12 1 = a 2.逻辑错误(逻辑错误) 1 #用户输入不完整(比如输入为空)或者输入非法(输入不是数字) 2 num=input(">>: &q