zoukankan      html  css  js  c++  java
  • python 的异常及其处理

    python标准异常

    什么是异常?

      异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行

      一般情况下,在Python无法正常处理程序时就会发生一个异常。

      异常是Python对象,表示一个错误。

      当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行

    以下为简单的try....except...else的语法:

    try:
    <语句>        #运行别的代码
    except <名字><语句>        #如果在try部份引发了'name'异常
    except <名字>,<数据>:
    <语句>        #如果引发了'name'异常,获得附加的数据
    else:
    <语句>        #如果没有异常发生

    try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。

    • 如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。
    • 如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。
    • 如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。
    try:
        print('try.......')
        r=10/0
        print('result:',r)
    except ZeroDivisionError  as e:
        print('except',e)
    finally:
        print('finally.....')
    print('END')

    except可以带多种异常类型

    try:
       You do your operations here;
       ......................
    except(Exception1[, Exception2[,...ExceptionN]]]):
       If there is any exception from the given exception list, 
       then execute this block.
       ......................
    else:
       If there is no exception then execute this block.

    try-finally 语句 try-finally 语句无论是否发生异常都将执行最后的代码

    try:
    <语句>
    finally:
    <语句>    #退出try时总会执行
    raise

    手动触发异常:raise 语句允许程序员强制抛出一个指定的异常。

    try:
        raise Exception('错误了。。。')
    except Exception as e:
        print(e)

    用户自定义异常

     在程序中可以通过创建新的异常类型来命名自己的异常(Python 类的内容请参见类)。异常类通常应该直接或间接的从 Exception 类派生,例如:

    class MyError(Exception):
    def __init__(self, value):
    self.value = value

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

    try:
    raise MyError('错误信息')
    except MyError as msg:
    print( msg.value)
    #print( msg.args)
    #print( '-----', msg.value)

    6. assert 断言

    assert是用来检查一个条件,如果它为真,就不做任何事。如果它为假,则会抛出AssertError并且包含错误信息。

    a = 1
    assert a < 5
    assert a > 5, '根本没有这会事'
  • 相关阅读:
    PythonStudy——epoll 模块实现异步IO模型
    MySQLStudy——Mac下MySQL 允许用户远程访问数据库
    MySQLStudy——MySQL 基础语句
    MySQLStudy——MySQL 概念
    MySQLStudy——Mac下MySQL 常用命令 启动 关闭 重启服务 查看版本
    PythonStudy——IO模型
    PythonStudy——非阻塞IO模型
    PythonStudy——多路复用IO select实现
    restfull api
    斜体菜单
  • 原文地址:https://www.cnblogs.com/lanyinhao/p/9197397.html
Copyright © 2011-2022 走看看