当前位置: 首页 > news >正文

Python3 捕捉异常

可以通过try/except语句来实现捕获异常,如下:

bpython version 0.15 on top of Python 3.5.1+ /usr/bin/python3
>>> x=3
>>> y=0
>>> x/y
Traceback (most recent call last):
  File "<input>", line 1, in <module>
    x/y
ZeroDivisionError: division by zero

捕获异常:

这里只输出提示信息:

#!/usr/bin/env python
# encoding: utf-8
"""
@author: kamil.liu @file: except.py
@time: 16-5-30 上午11:40
"""
x = 3
y = 0
try:
    print(x/y)
except ZeroDivisionError:
    print('The second number can`t be zero')

结果:

/usr/bin/python3.5 /home/kamil/PycharmProjects/untitled/test1/try/except.py
The second number can`t be zero

Process finished with exit code 0

不加参数,捕获异常:

如果捕获到异常,不处理,只传递异常,可以调用不带参数的raise,如下事例:

传递异常:

#!/usr/bin/env python
# encoding: utf-8

class MuffledCalculator:
    muffled = False
    def calc(self,expr):
        try:
            return eval(expr)
        except ZeroDivisionError:
            if self.muffled:
                print("Division by zero is illegal")
            else:raise
calculator = MuffledCalculator()
print(calculator.calc('9/3'))
#calculator.muffled = True
print(calculator.calc('9/0'))

"""
/usr/bin/python3.5 /home/kamil/PycharmProjects/untitled/test1/try/except.py
3.0
Traceback (most recent call last):
  File "/home/kamil/PycharmProjects/untitled/test1/try/except.py", line 16, in <module>
    print(calculator.calc('9/0'))
  File "/home/kamil/PycharmProjects/untitled/test1/try/except.py", line 8, in calc
    return eval(expr)
  File "<string>", line 1, in <module>
ZeroDivisionError: division by zero

Process finished with exit code 1
"""

不传递异常

#!/usr/bin/env python
# encoding: utf-8

class MuffledCalculator:
    muffled = False
    def calc(self,expr):
        try:
            return eval(expr)
        except ZeroDivisionError:
            if self.muffled:
                print("Division by zero is illegal")
            else:raise
calculator = MuffledCalculator()
print(calculator.calc('9/3'))
calculator.muffled = True
print(calculator.calc('9/0'))

"""
/usr/bin/python3.5 /home/kamil/PycharmProjects/untitled/test1/try/except.py
3.0
Division by zero is illegal
None

Process finished with exit code 0
"""

除0行为发生,屏蔽被打开,calc会返回None。

 

转载于:https://www.cnblogs.com/kamil/p/5542101.html

相关文章:

  • GCD 和Timer
  • iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局
  • 如何设置电脑的固定IP地址
  • 优质博士的养成之道——对话2015微软学者奖学金获得者
  • 小凡带你搭建本地的光盘yum源
  • Retrofit get post query filed FiledMap
  • ActiveMQ集群应用
  • 拉格朗日插值法
  • 在Mysql中如何显示所有用户?
  • 第十五周 6.6 --- 6.12
  • 主键外键练习
  • 最适合初学者的语言是什么?
  • mybatis+springmvc+jbpm4整合配置
  • 企业集群平台架构实现与应用实战
  • 人月神话阅读笔记—第四章
  • 【Linux系统编程】快速查找errno错误码信息
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • 30秒的PHP代码片段(1)数组 - Array
  • javascript 总结(常用工具类的封装)
  • JavaScript实现分页效果
  • Laravel 中的一个后期静态绑定
  • Linux各目录及每个目录的详细介绍
  • overflow: hidden IE7无效
  • PAT A1050
  • React16时代,该用什么姿势写 React ?
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • spring cloud gateway 源码解析(4)跨域问题处理
  • TypeScript迭代器
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 闭包--闭包作用之保存(一)
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 分布式熔断降级平台aegis
  • 配置 PM2 实现代码自动发布
  • 扑朔迷离的属性和特性【彻底弄清】
  • 如何借助 NoSQL 提高 JPA 应用性能
  • kubernetes资源对象--ingress
  • 仓管云——企业云erp功能有哪些?
  • #android不同版本废弃api,新api。
  • #DBA杂记1
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • ()、[]、{}、(())、[[]]命令替换
  • (1)SpringCloud 整合Python
  • (MATLAB)第五章-矩阵运算
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .net core控制台应用程序初识
  • .net 微服务 服务保护 自动重试 Polly
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .Net多线程总结
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .NET开源项目介绍及资源推荐:数据持久层