Python中的反射、异常处理

Python中的反射:本质上是利用字符串的形式去对象(模块)中操作(查找、获取、添加、删除)成员,一种驱于字符串的事件驱动。

Python中通过4个内置函数getattr、hasattr、delattr、setattr较为全面的实现了基于字符串的反射机制,他们都是对内存内的模块进行操作,并不会对源文件进行修改。通过hasattr可以防止非法输入错误并将其统一定位到错误页面。

            两个参数(对象,字符串)

上面的功能在特定的目录结构中才能正常实现,也就是两个模块在同一目录下,并且所有的操作函数都在同一模块内,但在现实操作环境中,页面处理函数往往被分配放置在不同的目录不同的模块中,我们不可能把所需要的函数都导入到

同一模块中,所以我们就实现动态函数的调用功能,在Python中用--import--来实现   --import--(字符串参数)通过它我们可以实现类似的反射功能。import()方法会根据参数动态的导入同名的模块。

常见的异常错误

                         

异常处理:Python解释器检查到错误会触发异常。程序员编写专门的代码,专门捕捉这个异常如果捕捉成功,则进入另一个处理分支,执行你为其制定 的逻辑,不会使其崩溃,这就是异常处理。

程序运行异常可分为两类:语法错误和逻辑错误。语法错误跟逻辑无关,我们在处理异常之前必须避免语法上的错误。

异常处理方式:1.if判断。if判断只能处理某一段代码的的异常,如果遇到某一段代码的多次异常,则需要进行多次循环,导致代码的可读性差

       2.Python提供的特定语法结构。     try:

                              被检测的代码块

                     except:异常类型#(try中一旦检测,就执行这个位置的代码)

       3.单分支 ,单分支只能处理指定 的异常,如果未捕捉到异常,则会报错

       4.多分支,代码更人性化,用户体验感好(对于不同的异常需要用不同的逻辑处理)

       5.万能异常(expection)可以捕捉任意异常,有利有弊,根据情况使用。

       6.try...else..语句。#try中没有异常被执行完成,就执行else中的代码

       7.try...finally..语句。#不管try中有没有报错都会执行finally分支中的代码

       8.自定义异常

       9.断言#assert断言是声明布尔值为真的判定,如果发生异常则说明表达式为假。assert的异常参数,其实就是在断言表达式后添加字符串的信息,用来解释断言,并更好地知道问题出现在哪里。

                                          具体格式:assert  expression [,字符串]

                                               assert表达式[,参数]

先完成功能,在测试的时候,一边修改代码,一边加上异常处理,只要加上异常处理,就必须加上日志,不要在大段的代码外直接套上异常处理,应该在具体的逻辑(具体的细节处的代码段)上加上细微的异常处理

对于可以预料到的异常一定要尽力的疏导,如果不能解决,必须要写上提示以及引发错误的原因。

原文地址:https://www.cnblogs.com/jacky912/p/10244995.html