>"/>
我的编程空间,编程开发者的网络收藏夹
学习永远不晚

异常处理

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

异常处理

  程序中有两种错误

    1.语法错误(这种错误,根本过不了Python解释器的语法检测,必须在程序执行前就改正)

#错误示范一
if

#错误示范二
print("adad"
语法错误

    2.逻辑错误

# 用户输入不完整
num = input(">>: ")
int(num)

#无法完成计算
res1 = 1/0
res2 = 1+'str'
逻辑错误

 

  在Python中不同的异常可以用不同的类型(Python中统一了类与类型,类型即类)去标识,不同的类对象标识不同的异常,一个异常标识一种错误

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

 

ArithmeticError
AssertionError
AttributeError
BaseException
BufferError
BytesWarning
DeprecationWarning
EnvironmentError
EOFError
Exception
FloatingPointError
FutureWarning
GeneratorExit
ImportError
ImportWarning
IndentationError
IndexError
IOError
KeyboardInterrupt
KeyError
LookupError
MemoryError
NameError
NotImplementedError
OSError
OverflowError
PendingDeprecationWarning
ReferenceError
RuntimeError
RuntimeWarning
StandardError
StopIteration
SyntaxError
SyntaxWarning
SystemError
SystemExit
TabError
TypeError
UnboundLocalError
UnicodeDecodeError
UnicodeEncodeError
UnicodeError
UnicodeTranslateError
UnicodeWarning
UserWarning
ValueError
Warning
ZeroDivisionError

更多异常
更多异常

 

  什么是异常处理?

    python解释器检测到错误,触发异常(也允许程序员自己触发异常)

    程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关)如果捕捉成功则进入另外一个处理分支,执行你为其定制的逻辑,使程序不会崩溃,这就是异常处理

  为什么要异常处理?

    python解析器去执行程序,检测到了一个错误时,触发异常,异常触发后且没被处理的情况下,程序就在当前异常处终止,后面的代码不会运行,谁会去用一个运行着突然就崩溃的软件。所以你必须提供一种异常处理机制来增强你程序的健壮性与容错性 

  如何进行异常处理?

  1.使用if判断式

num1=input('输入一个字符串: ')
if num1.isdigit():
    int(num1) #我们的正统程序放到了这里,其余的都属于异常处理范畴
elif num1.isspace():
    print('输入的是空格,就执行我这里的逻辑')
elif len(num1) == 0:
    print('输入的是空,就执行我这里的逻辑')
else:
    print('其他情情况,执行我这里的逻辑')

'''
问题一:
使用if的方式我们只为第一段代码加上了异常处理,但这些if,跟你的代码逻辑并无关系,这样你的代码会因为可读性差而不容易被看懂

问题二:
这只是我们代码中的一个小逻辑,如果类似的逻辑多,那么每一次都需要判断这些内容,就会倒置我们的代码特别冗长。
'''

 

  二丶Python提供了特定的语法结构来进行异常处理

try:
    a = "123"
    b = 5
    print(a+b)
except TypeError:
    print("错误")

  异常类只能用来处理指定的异常情况,如果非指定异常则无法处理

s1 = 'hello'
try:
    int(s1)
except IndexError as e:
    print(e)

  多分支

s1 = 'hello'
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)

  如果一个程序很多个异常呢?我们是不是要用except把所有的异常都列一遍呀.那样太麻烦了,Python也想到了这个,所以Python提供了一个万能异常:Exception,他可以捕获任意异常

s1 = 'hello'
try:
    int(s)
except Exception as e:
    print(e)    #name 's' is not defined

 

  异常的其它机构:else

s1 = 'hello'
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)
#except Exception as e:
#    print(e)
else:
    print('try内代码块没有异常则执行我')
finally:
    print('无论异常与否,都会执行该模块,通常是进行清理工作')

  finally分支

def func():
    f = open('file')
    try:
        while True:
            for line in f:
                if line.startswith('a'):
                    return line
    except:
        print('异常处理')
    finally:   # 即使return也会先执行fianlly中的代码
        f.close()

  断言和主动抛出异常

断言 - 语法
assert 1==2  # 只能接受一个布尔值  False
assert 1==1  # 只能接受一个布尔值  False
print(123456)
if 1 == int(input()):
    pass
else:
    raise AssertionError

异常处理中为每一个异常定制了异常类型(python中统一了类与类型,类型即类),对于同一种异常,一个except就可以捕捉到,可以同时处理多段代码的异常(无需‘写多个if判断式’)减少了代码,增强了可读性 

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

异常处理

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

异常--python异常处理

--****--python 异常处理------------------------------------------------------------------------------****DB API中定义了一些数据库操作的错
2023-01-31

异常处理

程序中有两种错误    1.语法错误(这种错误,根本过不了Python解释器的语法检测,必须在程序执行前就改正)#错误示范一if#错误示范二print("adad"语法错误    2.逻辑错误# 用户输入不完整num = input(">>
2023-01-30

PHP异常处理:处理异步操作中的异常

处理异步操作中的 php 异常需要:协程中,使用 try-catch-finally 语法捕获异常。promise 中,使用 then() 和 catch() 方法处理异常。实战案例:使用协程处理 http 请求中的异常,并捕获和处理异常。
PHP异常处理:处理异步操作中的异常
2024-05-14

urllib异常处理

urllib的error模块定义了由 request模块产生的异常。如果出现了问题,request 模块便会抛出error模块中定义的异常。1 URLErrorURLError类来自urllib库的error模块,它继承自OSError类,
2023-01-30

Java异常处理:理解异常类型和处理策略

通过合理的异常类型选择和适当的异常处理策略,我们可以提高程序的稳定性和可靠性。

Python -- 异常处理

当一个小人物冲向大时代,有多少伤害埋伏左右;      -- 北岛《城门开》当一个大梦想埋于小身体,有多少潜能冲破束缚。      -- 小Q 《梦想家》-------------------------------------------
2023-01-31

python异常处理

import re,random,tracebackkk ='不要惹怒胖子,后果自己看'p =
2023-01-31

Python 异常处理

写一个命令分发器初步要求 :程序员可以方便地注册函数到某一个命令, 用户输入命令时, 路由到注册的函数, 如果此命令没有对应的函数, 执行默认函数分析 :输入命令映射到一个函数, 并执行这个函数, 应该是cmd_tbl[cmd] = fn
2023-01-31

oracle异常处理

语句执行过程中,由于各种原因使得语句不能正常执行,可能会造成更大错误或整个系统的崩溃,所以PS/SQL提供了异常(exception)着一处理的方法来防止此类情况的发生。在代码运行的过程中无论何时发生错误,PL/SQL都能控制程序自动地转向执行异常部分。1.预
oracle异常处理
2016-06-04

PHP异常处理:使用Middleware异常处理中间件

php 异常处理使用 middleware 异常处理中间件,允许在应用程序的任何层处理异常,无需在每个控制器中显式处理。步骤如下:安装 symfony/error-handler 库。创建一个实现 middleware 接口的中间件类。在应
PHP异常处理:使用Middleware异常处理中间件
2024-05-14

JAVA异常与异常处理详解

一、异常简介什么是异常?异常就是有异于常态,和正常情况不一样,有错误出错。在java中,阻止当前方法或作用域的情况,称之为异常。java中异常的体系是怎么样的呢?(推荐:java视频教程)1.Java中的所有不正常类都继承于Throwable类。Throwab
JAVA异常与异常处理详解
2020-06-12

PHP异常处理:浅谈异常处理设计模式

php 异常处理有两种设计模式:面向对象异常处理:使用 try-catch 块捕获特定类型的异常。过程化异常处理:使用 set_exception_handler 函数设置一个全局异常处理函数,处理所有未捕获的异常。选择设计模式取决于应用程
PHP异常处理:浅谈异常处理设计模式
2024-05-14

异常处理:PHP中如何捕获和处理异常?

异常处理:PHP中如何捕获和处理异常?在PHP开发中,异常处理是非常重要的一环。当程序发生意外情况或错误时,我们需要通过捕获和处理异常来保证程序的正常运行。PHP中提供了一套异常处理的机制,本文将介绍如何在PHP中捕获和处理异常,并提供具体
异常处理:PHP中如何捕获和处理异常?
2023-12-18

PHP 异常处理:对错误和异常的全面处理

异常处理是 php 中处理错误和异常的重要机制,提高了应用程序的健壮性和稳定性。错误由解释器抛出,表示无法恢复的严重问题。异常由代码抛出,表示可恢复的运行时问题。php 提供了 error、exception 和 throwable 类来处
PHP 异常处理:对错误和异常的全面处理
2024-05-11

Golang异常处理之优雅地控制和处理异常

在Golang中,异常处理是非常重要的一部分,能够有效地控制和处理代码中的异常情况。通过Golang的异常处理机制,可以优雅地捕获和处理异常,保障代码的可靠性和稳定性。同时,Golang还提供了丰富的工具和API,帮助开发者更加轻松地进行异常处理
2023-05-16

Python之异常处理

错误包括语法错误和逻辑错误异常是程序运行时发生错误的信号,解释器追踪程序,根据错误抛出的异常。常用的异常:AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性xIOError 输入/输出异常;基本上是
2023-01-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录