python(day026——异常2)

vue前端模板 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"> <title>home</title> </head> <body> <d 阅读详情

1.异常

'''
try:
     <语句>#可能发生异常的代码 
except<名字>:
    <语句>#如果在try部份引发了'name'异常 
except<名字> as <异常参数>:
    <语句>#如果引发了‘name’异常,获得附加的异常对象 
else:
    <语句>#如果没有异常发生
'''

print(1)
try:
    int("abc")
except ValueError:
    print("值异常")
except ZeroDivisionError:
    print("被除数为0")
except:  # 拦截所有出现的异常错误,除了语法错误
    # 如果出现异常,则拦截后面语句,直接跳转执行except
    # 如果try中没有异常错误发生,则不执行except
    print("some error occur!")

print(2)

如果except中又有异常,则依然会抛出异常,程序中断。因为没有异常捕获机制。

2.同时捕获多个异常

print(1)
try:
    #int("abc")
    print("**********")
    a=1/0
except (ValueError,ZeroDivisionError) as e:
    print(e)

except:  # 拦截所有出现的异常错误,除了语法错误
    # 如果出现异常,则拦截后面语句,直接跳转执行except
    # 如果try中没有异常错误发生,则不执行except
    print("some error occur!")

print(2)

3.finally和else

 finally和else语句块可以同时存在。如果发生异常只执行finally语句块,否则两语句块都会执行。

try:
    int("a")
except:
    print("error")
else:
    print("else")
finally:
    print("finally")

print(2)

4.raise:自己触发异常

#coding=utf-8
def exceptionTest(num):
    if num < 0:
        raise Exception("Invalid num")
    else:
        print (num)
    if num == 0:
        raise ZeroDivisionError("integer division or modulo by zero")
#调用函数,触发异常
try:
    exceptionTest(-12)
except Exception as e:
    print("error:",e)
try:
    for i in range(10):
        for j in range(10):
            if i == 5 and j == 5:
                raise  #可以用来退出多层循环
            print(i, j)
except:
    print("break")

 

5.自定义异常

# coding=utf-8
class Networkerror(RuntimeError):
    # 重写默认的__init__()方法,
    # 抛出特定的异常信息
    def __init__(self, value):
        self.value = value

# 触发自定义的异常
try:
    raise Networkerror("Bad hostname")
except Networkerror as e:
    print ("My exception occurred, value:", e.value)


代码示例2:
#coding=utf-8
class ShortInputException(Exception):#定义了异常类
  '''A user-defined exception class.'''
  def __init__(self, length, atleast):
    Exception.__init__(self)
    self.length = length
    self.atleast = atleast
try:
  s = input('Enter something --> ')
  if len(s) < 3:
    #如果输入的内容长度小于3,触发异常
    raise ShortInputException(len(s), 3)
except EOFError:
  print ('\nWhy did you do an EOF on me?')
except ShortInputException as x:
  print ('ShortInputException: The input was of length %d,\
  was expecting at least %d' % (x.length, x.atleast))
#使用异常类实例的值,作为打印的内容
else:
  print ('No exception was raised.')

6.with

class opened(object):
    def __init__(self, filename):
        self.handle = open(filename)
        print ('Resource: %s'% filename)

    def __enter__(self):
        print ('[Enter %s]: Allocate resource.' % self.handle)
        return self.handle  # 可以返回不同的对象

    #exc_type异常类型,exc_value异常值,exc_trackback异常的堆栈信息
    #如果with代码块里面出现异常了,上面三个值都有对应的值保存
    #如果没有异常,则上面三个值都是None
    def __exit__(self, exc_type, exc_value, exc_trackback):
        print ('[Exit %s]: Free resource.' % self.handle)
        if exc_trackback is None:
            print ('[Exit %s]: Exited without exception.,' % self.handle)
            self.handle.close()
        else:
            print ("error occur!")  #句柄泄漏
        #return True
        return False  #会抛出异常,中断程序的执行

try:
    with opened(r'e:\aa.txt') as fp:
        raise TypeError
except:
     print("TypeError occur!")

print ("Done")


#1)上下文:定义一下上下文的类,with 这句话,必须实现上下文类的实例化
#2)并且存到as xxx中的xxx的变量里
#3)上例子中,opened(r'e:\aa.txt') 后生成的实例,存在了fp里面
#4)fp在with的代码块中后续就可以使用了。
#5)执行__enter__方法中的逻辑
#6)执行with下缩进的代码块
#7)执行之后,执行__exit__方法中的逻辑
#8)如果有异常,则抛出,抛给with外面的try去做处理

#写with的好处就是可以自动帮你关闭,回收资源。例如:关闭文件的句柄!

7.断言

Python中使用assert断言是一个非常好的习惯。在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它运行时崩溃,不如在出现错误条件时就崩溃,这个时候我们就需要用到断言。 assert断言是声明其布尔值必须为真的判断,如果发生异常就说明表达式为假。 如果断言成功不采取任何措施(类似语句),否则触发AssertionError(断言错误)的异常

try:
    assert 1+1+1==3
except AssertionError:
    print("断言")

练习:

#自定义一个函数,用到异常处理的各个关键字
import traceback

def read_flie_line(file_path,line_num):
    try:
        fp =open(file_path)
        content=fp.readlines()[line_num]
    except FileNotFoundError:
        print("%s 文件不存在" % file_path)
        return None
    except TypeError:
        print("读取行数据传入有误")
        return None
    except Exception as e:
        print("发生未知错误,错误信息:",e)
        traceback.print_exc()
        return None
    return content

print(read_flie_line("d:\\test\\c.py",231))

 

 

 

 

Python数据分析和人工智能教程全套笔记+视频教程课件+源码免费领 权威资料显示,数据分析与人工智能已经密不可分,数据分析可以帮助你从零进入人工智能时代。如果你喜欢深入技术,学会了数据分析,你才能打好基础,去学习机器学习。如果你喜欢商业方面的内容,可以往人工智能业务方向发展。 那么,问题来了,如何才能快速且同时掌握数据分析和人工智能呢?接下来给大家分享的教程资料绝对能够满足你的需求,更重要的是这个精品Python全套学习视频教程目前免费领啦,如果你想学Py... 阅读详情

相关推荐

【信息科学与工程学】【物理/化学科学和工程技术】知识体系04 热学 系列二01

尺度与速率:都涉及微纳尺度的热传递,并追求对热过程的快速、精确控制(RTP:秒级;芯片:毫秒级;NIL:秒级)。温度均匀性:是所有领域的核心目标。芯片要求空间温度均匀以保证性能与可靠性;RTP要求片内温度均匀以保证工艺一致性;热NIL要求大面积温度均匀以保证图案保真度。测量与控制的闭环:都严重依赖高精度、实时的温度测量(红外、热偶、噪声)和先进控制算法(PID、MPC、前馈)。材料的热响应:都涉及材料(硅、聚合物、界面材料)热物性(k, c_p, α, η)的精确表征及其对温度/过程的依赖性。多物理场耦合。

weixin_49199313的博客 368

python with语句 局部变量_Python 的 with 语句详解

class opened(object):def __init__(self, name):self.handle = open(name)def __enter__(self):return self.handledef __exit__(self, type, value, trackback):self.handle.close()with opened('/tmp/a.txt') as f...

weixin_39553705的博客 332

从‘裸纤’到成品:手把手拆解光纤阵列(FA)的装配、点胶与端面研磨全流程

本文详细拆解了光纤阵列(FA)从裸纤到成品的全流程,包括装配、点胶与端面研磨等关键工艺。通过实战经验和数据对比,揭示了5G基站、数据中心等场景中FA的精密制造要点与常见故障解决方案,为光通信器件生产提供专业指导。

weixin_42652674的博客 749

python中with的用法

with是从Python2.5引入的一个新的语法,它是一种上下文管理协议,目的在于从流程图中把 try,except 和finally 关键字和 资源分配释放相关代码统统去掉,简化try….except….finlally的处理流程。 with通过__enter__方法初始化,然后在__exit__中做善后以及处理异常。 所以使用with处理的对象必须有__enter__()和__...

weixin_30905133的博客 273

Windows10内核逆向-2-KiSystemCall64的调用流程剖析

本文深入剖析了Windows 10 x64系统中KiSystemCall64函数的完整调用流程。从用户态触发syscall指令开始,详细讲解了如何通过swapgs切换内核栈、构建KTRAP_FRAME陷阱帧、进行SMAP/CFG等安全检查,到最终通过SSDT寻址并执行目标系统服务的全过程,揭示了系统调用从Ring 3到Ring 0切换的核心机制与安全设计。

weixin_29209805的博客 82

告别Sourceforge安装器!手把手教你下载MinGW-w64离线包并配置环境变量(Windows 10/11)

本文详细介绍了如何在Windows 10/11系统上通过下载MinGW-w64离线包并配置环境变量,完全绕过Sourceforge安装器的问题。从选择正确的版本、解压到本地目录,到设置系统环境变量和验证编译环境,手把手指导开发者快速搭建稳定的GCC编译环境,解决常见的安装困扰。

weixin_30896825的博客 336

【Python 必会技巧】[i for i in range(1,10)] — 列表解析式,列表中使用 for 循环

经常会看到类似于 [i for i in range(1,10)] 的表达式,这种表达式称为列表解析(List Comprehensions),类似的还有字典解析、集合解析等等。 列表解析式是将一个列表(实际上适用于任何可迭代对象)转换成另一个列表的工具。在转换过程中,可以指定元素必须符合一定的条件,才能添加至新的列表中,这样每个元素都可以按需要进行转换。 每个列表解析式都可以重写为 for 循环...

BOB'S BLOG 10万+

PLS-PM with R 偏最小二乘路径建模 (R语言)

1. 引入 1.1. 安装plspm包 plspm 是一个用于执行偏最小二乘路径建模分析的 r 程序包。 在 CRAN 上可以免费下载: Http://cran.r-project.org/web/packages/plspm/index.html. 此后,通过以下代码在r中安装并加载该程序包即可。 install.packages("plspm") library("plspm") 2. 一些简单概念 2.1. 潜变量和观测变量 不少变量如满意度、成功指数是无法通过观测得到

Wowlittlemoon的博客 1万+

Python中断多重循环的几种思路exit_flag

常见方法   II. 跳出多重循环 事实上,Python的标准语法是不支持跳出多重循环的,所以只能利用一些技巧,大概的思路有:写成函数、利用笛卡尔积、利用调试。 写成函数 在Python中,函数运行到return这一句就会停止,因此可以利用这一特性,将功能写成函数,终止多重循环,例如 def work(): for i in range(10): for j in ra...

weixin_34107955的博客 1041

CANoe VLAN配置的艺术:如何通过脚本自动化实现高效车载网络测试

本文深入探讨了CANoe VLAN配置的自动化实现,通过CAPL脚本与Python工具链的结合,提升车载网络测试效率。重点解析了硬件侧VLAN配置与软件侧VLAN配置的交互机制,并提供了实用的脚本开发示例和调试技巧,帮助工程师快速构建高效的自动化测试方案。

qqq44的博客 617

基于毫米波生物感知雷达+STM32设计的独居老人居家监护系统(微信小程序)(192)

当前基于STM32设计的独居老人居家监护系统为独居老人提供一种简便、实时的健康监护服务。该系统通过集成多种传感器和功能模块,能够实时监测老人的生理指标、姿态以及室内环境状况,并通过微信小程序远程显示数据,当出现异常情况时及时发出报警提醒。

1万+

Python学习day09 - Python进阶(3)

Python学习day09 - Python进阶(3)异常处理1. 什么是异常2. 语法错误3. 逻辑错误4. 万能捕捉异常的方式Python深浅拷贝1. 拷贝(赋值)2. 浅拷贝3. 深拷贝基本的文件操作1. 找到文件路径2. 双击打开3. 看文件4. 写文件5. 关闭文件实战之猜年龄游戏 Python学习day09 - Python进阶(3) 异常处理 1...

weixin_38168696的博客 109

ADS电路仿真方法综述:原理与应用

在射频与微波电路设计中,精确的仿真技术是验证性能的关键。ADS(Advanced Design System)作为行业标准工具,集成了多种仿真方法,适用于不同场景。本文将系统解析瞬态分析、谐波平衡(HB)、交流分析(AC)、直流分析(DC)、S参数、大信号SP(LSSP)及包络分析的原理、实现机制与应用场景。

u014344410的博客 481

python小白-day1-作业2

作业2内容:编写登录接口 (1)输入用户名密码; (2)认证成功后显示欢迎信息; (3)输错三次后锁定。 程序部分:(Python 3.5.2) 用户名密码文件 —— account.txt test1  123test2  123test3  123test4  123 锁定文件 —— account_lock.txt admin1ddaacc 1 # ...

weixin_34313182的博客 96

Ultralytics 框架中 model.predict() 返回的 results 对象的详细解析

通过掌握 results 对象的使用方法,您可以快速实现模型部署、数据分析与可视化。

浩瀚之水的专栏 748

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

python测验4_Python 练习实例4

#19ym853***877@qq.com12参考解法:#!/usr/bin/python# -*- coding: UTF-8 -*-year=int(raw_input("年:\n"))month=int(raw_input("月:\n"))day=int(raw_input("日:\n"))months1=[0,31,60,91,121,152,182,213,244,274,305,335...

weixin_39773817的博客 267

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

python菜鸟教程100例-Python 练习实例4

#19ym853***877@qq.com10参考解法:#!/usr/bin/python# -*- coding: UTF-8 -*-year=int(raw_input("年: "))month=int(raw_input("月: "))day=int(raw_input("日: "))months1=[0,31,60,91,121,...

q6q6q的专栏 282

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【Python入门到精通】基础篇

《Python编程入门指南》摘要(149字): Python作为易学高效的编程语言,凭借简洁语法、丰富生态和跨平台特性广受欢迎。本文从环境配置到基础语法系统介绍Python学习路径,涵盖三大系统安装指南、开发工具选择(IDLE/VS Code等)、编码规范(UTF-8最佳实践)、输入输出功能实现等核心内容。重点讲解变量命名规则、注释规范和代码调试技巧,帮助初学者建立良好的编程习惯。通过"Hello World"示例演示多种运行方式,为后续学习数据类型、流程控制等进阶知识奠定基础,是零基础学员的理想入门教程。

2301_81248642的博客 955

OpenAI API成本优化四大杠杆:请求精简、响应裁剪、缓存控制与智能重试

OpenAI API调用成本并非简单由模型单价决定,而是由输入token、输出token和调用频次共同构成的三维计费结构。其中输入token因系统提示词冗余、JSON序列化开销、用户消息噪声等问题,常含65%-82%无效成分;而输出token则受max_tokens盲目设置、缺乏stop边界和非结构化响应等影响持续膨胀。通过工程化手段对请求体进行语义蒸馏与JSON最小化、对响应实施max_tokens科学设定与response_format结构化约束、构建基于意图哈希的业务层缓存、以及引入带抖动退避与自动降

weixin_30482181的博客 406

C 语言学习笔记

B站up Micro_Frank C语言大师系列课程笔记

g_c_m_g的博客 1224

python(day018——字符串4)

1.replace() :方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。 >>> s="hello world" >>> s.replace("world","Lily") 'hello Lily' >>> s.replace("l","*") 'he**o wor*d' 2.expandtabs():把字符串中的 tab 符号('\t')转为空格,tab 符号('\t')默认

Teeeeesting的博客 456

python(day019——字符串练习)

1.实现lower函数 import string def lower_word(a): if not isinstance(a,str): return None result="" for i in a: if i in string.ascii_uppercase: result+=chr(ord(i)+32) #result+=i.lower() else:

Teeeeesting的博客 442

python(day022——文件操作2)

1.文件读取:fp.read() https://www.runoob.com/python/python-func-open.html 模式 描述 r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 r+ 打开一个文件用于读写。文件指针将会放在文件的开头。 rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 w 打开一个文件只用

Teeeeesting的博客 364

python(day017——字符串3)

1.字符串判断 >>> s="你好" >>> type(s) <class 'str'> >>> isinstance(s,(str,bytes)) True >>> def add(a,b): ... if (not isinstance(a,str)) or (not isinstance(b,str)): ... return None ... return a+b ... &g

Teeeeesting的博客 333

python(day020——异常1)

1.try print(1) try: a=1/0 print("***********") except:#拦截所有出现的异常错误,除了语法错误 #如果出现异常,则拦截后面语句,直接跳转执行except print("some error occur!") print(2) print(1) try: a = 1 print("***********") except: # 如果try中没有异常错误发生,则不执行except p.

Teeeeesting的博客 314

python(day023——文件和目录操作3)

1.读写 "w+":打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 >>> fp=open("aa.txt","w+") >>> fp.write("好好学习\n") 5 >>> fp.write("天天向上\n") 5 >>> fp.seek(0,0) 0 >>> fp.readline() '好好学习\n' >>> fp

Teeeeesting的博客 273
上一篇: python(day025——文件和目录操作4)
下一篇: python(day027——集合、时间、类)
王总总
博客等级 码龄8年 2粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值