zoukankan      html  css  js  c++  java
  • 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表达式[,参数]

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

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

  • 相关阅读:
    java基础
    C++菜鸟启动之旅--vc6.0使用教程详解
    第8章 Linux磁盘与文件系统管理
    IO(四)----对象的序列化
    IO(三)----序列流
    IO(二)----字符流
    IO(一)----字节流
    File类
    枚举类
    自动装箱和自动拆箱
  • 原文地址:https://www.cnblogs.com/jacky912/p/10244995.html
Copyright © 2011-2022 走看看