python抛出异常和捕获异常_在try块中可以抛出异常吗

python抛出异常和捕获异常_在try块中可以抛出异常吗PythonLearnPython抛出异常【1】程序运行过程中Python解释器遇到一个错误会停止程序的运行并且提示一些错误信息这个就是异常程序停止并且提示错误信息的动作叫做抛出异常抛出异常原因 主动捕获异常可以增加健壮性抛出异常的种类AssertionError,断言失败抛出异常;AttributeError,找不到属性抛出异常;ValueError,…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

PythonLearn

Python抛出异常【1】

 程序运行过程中 Python解释器遇到一个错误 会停止程序的运行 并且提示一些错误信息 这个 就是异常
程序停止并且提示错误信息的动作叫做抛出异常

抛出异常原因

	主动捕获异常 可以增加健壮性

抛出异常的种类

  1. AssertionError ,断言失败抛出异常;
  2. AttributeError ,找不到属性抛出异常;
  3. ValueError , 参数值不正确(类型正确);
  4. WindowsError/(OSError,IOError,EnvironmentError),I/O相关错误
  5. UnicodeError,ValueError的子异常,编码错误
  6. UnicodeDecodeError UnicodeError的子异常 编码,解码错误
  7. UnicodeEncodeError UnicodeError的子异常 编码,编码错误
  8. UnicodeTranslateError UnicodeError的子异常 编码,翻译错误
  9. ConnectionError OSError子异常,连接错误
  10. BrokenPipeError ConnectionError 子异常 连接管道错误
  11. ArithmeticError 算术错误的基类
  12. ZeroDivisionError 算数错误的子类,除法或模运算的第二个参数是零
  13. BufferError 缓冲区错误
    注意 如果不确定需要打印异常种类 只是单纯不想让程序暂停 可以使用基类Exception 但是 Python中不推荐使用这种方法

抛出异常的格式

1.基本语法

try:
    num = int(input("请输入一个数字:"))
    print(num)
except ValueError as e:
  print(e)
finally:
 print("抛出异常")

2.解析
关键字try 以及except是 使用Python 解释器主动抛出异常的关键,
Python解释器从上向下执行 当运行try中的某行代码出错,会直接进入except中执行下方代码 try中错行下方的代码不会被运行
except…as… 是固定的语法格式 打印traceback信息
finally 后的代码不管是否抛出异常都会执行
except 的原理 调用sys中 exc.info 方法返回基本信息 所以抛出异常的第一步拓展可以在这里开始
注意 每个关键字下方的代码都是独立的(所有的变量都是局部变量)

基本拓展:sys.exc.info

1.初步拓展

try:
    num = int(input("请输入一个数字:"))
    print(num)
except ValueError as e:
    exc_type, exc_value, exc_traceback_obj = sys.exc_info()
    print(exc_type) # 异常的类型
    print( exc_value) # 异常的值
    print(exc_traceback_obj)	#异常的对象 返回堆栈的位置 内存地址
    

在一般情况下 基本的抛出异常已经足够使用 但是 不排除特殊情况 比如说日志输出等场景 这种场景可能需要进一步的拓展异常的抛出 具体的方法会再下一章进行详细的记录…

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/180795.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • AdventureWorks2008R2安装过程可能会遇到的一些问题及解决方案

    AdventureWorks2008R2安装过程可能会遇到的一些问题及解决方案AdventureWorks2008R2范例数据库对于学习SQLServer2008R2是一个非常好的学习案例库,里面包含了一些详尽的数据库案例(官网下载)。但是如果直接安装的话,可能会遇到一些问题,下面介绍安装的一些必要前提:1.安装的数据库账户应具有系统权限。2.你所安装的数据库至少是”SQLServerExpresswithAdvancedServices“版本(我所安…

  • BigDecimal 加减乘除[通俗易懂]

    在java里面,int的最大值是:2147483647,现在如果想用比这个数大怎么办?换句话说,就是数值较大,这时候就用到了BigDecimal 下载整理了一下BigDecimal的加减乘除。。 BigDecimalbignum1=newBigDecimal(“10”); BigDecimalbignum2=newBigDecimal(

  • Silverlight学习网站[通俗易懂]

    Silverlight学习网站[通俗易懂]http://silverlight.cn/

    2022年10月10日
  • getparameter方法的作用_have got和have的区别

    getparameter方法的作用_have got和have的区别getParameter和getAttribute区别(超详细分析)对getParameter过程,如下图:对getAttribute过程,如下图:两者区别:①getParameter()获取的是客户端设置的数据。getAttribute()获取的是服务器设置的数据。②getParameter()永远返回字符串getAttribute()返…

    2022年10月24日
  • Oracle 创建表空间和用户「建议收藏」

    Oracle 创建表空间和用户「建议收藏」文章目录一、创建表空间二、创建用户一、创建表空间表空间?ORACLE数据库的逻辑单元。数据库—表空间:一个表空间可以与多个数据文件(物理结构)关联一个数据库下可以建立多个表空间,一个表空间可以建立多个用户、一个用户下可以建立多个表。创建表空间必须使用具有超级管理员权限的用户,这里就是system下面的Connetas表示连接数据库的身份,一般选择Normal,表示一般的身份,下面两个表示修改数据库的配置,一般是管理员的操作功能选择。(1)打开创建数据库的窗口(2)创建表

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号