语法错误和异常

  • 语法错误和异常
    • 异常和错误
    • 处理异常
    • 捕获指定异常
    • 异常中的else
    • 异常的finally
    • 自定义异常类型

语法错误和异常

异常和错误

错误分为两种:语法错误与异常

  1. 语法错误:指拼写代码时发生的漏写,错写以及中英文符号的拼写错误
    例如:
while Trueprint('hello')


如上代码就是在拼写过程中发生的语法错误
语法错误,IDE 可以给出提示
2. 异常:代码编写过程中没有发生错误,但在代码运行中发生的错误叫异常
例如:

res = open('aa.txt', 'r')


如上代码就是在运行时出现的异常

异常:代码编写阶段没有问题,而是在代码运行阶段出现的错误,Python 解释器会抛出异常信息

在开发阶段,异常信息可以显示,但项目上线后,异常信息不能显示,可以将异常信息写道某个文件中,这也是对异常信息的一种处理方式

抛出异常:当程序停止运行并在控制台提示错误信息时,我们称之为抛出异常

处理异常

如果相对异常进行处理,需要:

  • 让异常信息不要显示在页面上
  • 能够获取异常信息,然后针对性的进行处理,如写入日志文件等

如何获取异常信息?
使用 try…except 组合进行处理

  • 将可能发生异常的代码放到 try 中
  • 使用 except 捕获异常:就是说 try 中代码一旦出错,就会自动跳转到 except 中;如果 try 中代码没有发生错误,则不会自行 except 中的代码
try:res = open('aa.txt', 'r')# a = 10
except:print('出错了')


如上代码就是处理异常的写法
将可能发生异常的代码放入try中在使用except来捕获异常

捕获指定异常

  • 代码运行时的错误有很多种,所以异常也就有很多种,比如:IndexError、KeyError、FileNotFoundError、ZeroDivisionError
  • python 内置了很多的异常类,用来捕获这些错误
  • 为什么要内置异常类型
    • 如果仅仅使用 try…except 虽然可以捕获异常,但是无法知道具体的异常信息,非常不利于后面处理错误
    • 在 except 后面加上 异常类型,就可以捕获到具体的异常信息
  1. IndexError
l1 = [2, 33, 4, 5]
print(l1[6])

出现IndexError一般是指指定的位置偏移或超出了字符串或列表的长度范围
避免IndexError异常方法为:偏移量或长度不应该超过字符串或列表的最大长度

  1. KeyError
d1 = {'name': 'yhb'}
print(d1['age'])

出现KeyError的情况一般是指在字典中查找kry不存在

  1. FileNotFoundError
res = open('a.txt', 'r')

出现FileNotFoundError一般是文件报错异常
Python中出现这种报错异常无异于文件名或文件类型出错(例如:aa.txt写成了a.txt或ab.txt;又或者aa.txt写成了aa.md)或者Python字符串的转义在Python字符串中 == \ == 表示转义字符(例如:== \ ==(在行尾时)表示 续航符 )所以在写入文件路径时应在文件路径钱加上 r (例如:r"‪E:\PC\aa.txt")

  1. ZeroDivisionError
print(10 / 0)

任何一个数值被零除都会导致ZeroDivisionError异常

  1. Exception
    所有程序异常类的父类。
try:res = open('a.txt', 'r')l1 = [2, 33, 4, 5]print(l1[6]) #list index out of range 列表索引超出范围print(10 / 0)  #division by zero 除数为零
except Exception as result:print(result)

except 后面如果指定异常类型,就只能捕获次类型异常,无法捕获其他异常

异常中的else

else表示的是如果没有异常要执行的代码。

try:a = 10# res = open('a.txt', 'r')   l1 = [2, 33, 4, 5]print(l1[6])     #list index out of rangeprint(10 / 0)       #division by zero
except Exception as result:print(result)
else:# try 中没有出现异常,就会执行 else 中代码print('try 中没有出现异常')

异常的finally

finally表示的是无论是否异常都要执行的代码

  • 案例
    读取文件 a.txt 中内容,并输出
    如果 a.txt 文件不存在,则创建 a.txt ,并向其中写入"i have a dream"
try:res = open('a.txt', 'r')content = res.read()print(content)
except FileNotFoundError as result:res = open('a.txt', 'w')res.write('I have a dream')
finally:print('我总会执行')res.close()

自定义异常类型

  • 自定义异常类型要考虑清楚次类型处理哪些错误
  • 在Python中,抛出自定义异常的语法为 raise 异常类对象 。
class ShortInputError(Exception):"""此方法的主要作用是,接受一些参数,以供 str 方法使用,如果 str 方法不需要任何数据,此方法也可以不定义"""def __init__(self):pass# self.user_length = user_length# self.min_length = min_lengthdef __str__(self):# 返回如果 user_length<min_length 时要向用户展示的错误信息return f'密码长度不符合要求'try:password = input('输入密码:')if len(password) < 3:"""raise 后面跟一个异常类型的实例,作用是抛出此中类型的异常,好让 except 能够捕获,也就是说,将代码的控制权移交给 except        """raise ShortInputError()
except ShortInputError as result:# result 就是自定义异常类中 str 方法返回的错误信息print(result)
控制权移交给 except        """raise ShortInputError()
except ShortInputError as result:# result 就是自定义异常类中 str 方法返回的错误信息print(result)

Python语法错误和异常相关推荐

  1. python 语法错误 和异常_Python基础知识:新手学Python时常见的语法错误和异常

    大家好,今天我们简单介绍下在学习Python时常见的一些错误和异常. 记得刚接触Python的时候,一条简单的语句在执行的时候却总能遇到报错.然后各种艰难的复查发现可能是循环语句缺少冒号啊.用了中文的 ...

  2. python中语法错误-Python语法错误与异常及异常处理方法

    回顾 在Python进阶记录之基础篇(二十)中,我们介绍了Python面向对象中的类方法和静态方法,以及类中拥有特殊功能的魔法函数.需要重点掌握类方法和静态方法的概念和基本用法,理解魔法函数的作用冰女 ...

  3. python语法错误概述_Python 错误和异常代码详解

    程序中的错误一般被称为 Bug,无可否认,这几乎总是程序员的错... 程序员的一生,始终伴随着一件事 - 调试(错误检测.异常处理).反反复复,最可怕的是:不仅自己的要改,别人的也要改...一万头草泥 ...

  4. python语法错误概述_python语法错误

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我是python中的新手,当我想在模块中编译代码时,我遇到语法错误:invail ...

  5. python中if错误-Python中错误和异常

    第1章 概念 错误 语法错误:代码不符合解释器或编译器的语法 逻辑错误:不完整或不合法的输入或者计算出现问题 异常:代码执行过程中,出现问题导致程序无法执行 程序遇到逻辑或算法问题 运行过程中计算机错 ...

  6. Missing parentheses in call to 'print'——python语法错误

    Missing parentheses in call to 'print'--python语法错误 这个消息的意思是你正在试图用python3.x来运行一个只用于python2.x版本的python ...

  7. python老是提醒双引号错误_避免最常见的python语法错误,建议收藏!

    谢谢关注ThinkingDifferent思考. 我自学python大概有2年左右的时间,学过编程的朋友都知道,代码当中哪怕少了一个冒号或者引号就会报错,写代码对这方面还是要求挺高的,挺严格的. 因此 ...

  8. python语法错误修改_python基础之错误、调试(异常处理)

    在程序运行过程中,总会遇到各种各样的错误. 有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,这种错误我们通常称之为bug,bug是必须修复的. 有的错误是用户输入造成的,比如让用 ...

  9. python语法错误类型_python常见报错类型和异常处理

    更新ing 常见的报错类型和简析.异常处理.其他类型的报错(异常)类型简介.自定义异常 常见的报错类型和简析: 报错类型 报错内容 错误类型判断 错误解决方式 AttributeError 属性错误: ...

最新文章

  1. oracle中DBWR全称,Oracle基本术语大全
  2. 网络编程(原始套接字)
  3. 数据结构选择题(c语言)
  4. 利用jquery修改elment的自定义组件多选框el-select(修改多选框的颜色)
  5. ECMAscript6入门(1)
  6. HTML5能取代Android和iOS应用程序吗?
  7. java restlet 教程_Restlet 2.0 边学边写(五)Restlet的POST、PUT和DELETE
  8. 软件工程需求分析模板(简单)
  9. 中标麒麟Linux64平台上QT5.6.3源码编译安装
  10. VS2013 TeeChart_v8 MFC C++ 使用手册干货(一)TeeChart ColorGrid类的简单使用
  11. 安卓源码AOSP下载使用的正确姿势
  12. 如何安全快速的迁移你的系统到固态硬盘
  13. java 异常 中英文_Java异常与错误处理中英文翻译.doc
  14. oracle rfs进程过多,oracle 11.2 DataGuard少了日志应用进程RFS
  15. java的枚举类型是什么_什么是枚举(java枚举类型enum用法)
  16. create-react-app创建的项目配置多入口MPA模式。报Cannot read property ‘filter’ of undefined
  17. Android无法打开相册查看视频
  18. 在ASP.NET中使用ListView控件对数据进行显示、分页和排序
  19. SaaS-HRM中的认证授权
  20. 操作符 , | , ^,<<,>>

热门文章

  1. QQ能上,但是网页打不开?
  2. HTML 鼠标放上显示悬浮窗口
  3. 秉承极简美学设计:Polestar 2 登陆中国后会威胁到谁?
  4. TechnoAP公司发布“脉冲形状鉴别”选件
  5. 给定一个函数做其最佳平方逼近c语言,第三章 函数逼近 — 最佳平方逼近.
  6. 94、图解:网络硬件的发展史
  7. 如何将电子签名透明化处理
  8. Oracle数据库违反唯一约束条件
  9. java关于ServletConfig FilterConfig什么用
  10. linux eclipse某些项目,某些项目无法导入,因为它们已存在于Eclipse中的工作空间错误中...