python异常链
习惯使用java开发,在java开发里有异常链概念和重新抛出异常,在python是怎么实现的呢?
1.异常链
1.1.java实现
public static void test1() throws Exception{
throw new Exception("test1 ex");
}
public static void test2() throws Exception{
try {
test1();
} catch (Exception e) {
throw new Exception("test2 ex",e);
}
}
public static void main(String[] args) throws Exception {
test2();
}
异常输出:
Exception in thread "main" java.lang.Exception: test2 ex
at com.epgis.gisserver.EText.test2(EText.java:)
at com.epgis.gisserver.EText.main(EText.java:)
Caused by: java.lang.Exception: test1 ex
at com.epgis.gisserver.EText.test1(EText.java:)
at com.epgis.gisserver.EText.test2(EText.java:)
... more
1.2.python实现
import traceback
def test1():
raise Exception("ex test1")
def test2():
try:
test1()
except Exception as e:
raise Exception("ex test2") from e
if __name__ == '__main__':
test2()
异常输出:
Traceback (most recent call last):
File "F:/MyProgram/pythonProgram/Nike/ex_test.py", line , in test2
test1()
File "F:/MyProgram/pythonProgram/Nike/ex_test.py", line , in test1
raise Exception("ex test1")
Exception: ex test1 The above exception was the direct cause of the following exception: Traceback (most recent call last):
File "F:/MyProgram/pythonProgram/Nike/ex_test.py", line , in <module>
test2()
File "F:/MyProgram/pythonProgram/Nike/ex_test.py", line , in test2
raise Exception("ex test2") from e
Exception: ex test2
2.重新抛出异常
2.1.java实现
public static void test1() throws Exception{
throw new Exception("test1 ex");
}
public static void test2() throws Exception{
try {
test1();
} catch (Exception e) {
throw new Exception("test2 ex");
}
}
public static void main(String[] args) throws Exception {
test2();
}
异常输出:
Exception in thread "main" java.lang.Exception: test2 ex
at com.epgis.gisserver.EText.test2(EText.java:)
at com.epgis.gisserver.EText.main(EText.java:)
可以看出已经将test1的异常给抛弃
2.2.python实现
import traceback
def test1():
raise Exception("ex test1")
def test2():
try:
test1()
except Exception as e:
raise Exception("ex test2") from None
if __name__ == '__main__':
test2()
异常输出:
Traceback (most recent call last):
File "F:/MyProgram/pythonProgram/Nike/ex_test.py", line , in <module>
test2()
File "F:/MyProgram/pythonProgram/Nike/ex_test.py", line , in test2
raise Exception("ex test2") from None
Exception: ex test2
与java不同的地方一定要from None
如果不使用from会怎么样?
import traceback
def test1():
raise Exception("ex test1")
def test2():
try:
test1()
except Exception as e:
raise Exception("ex test2")
if __name__ == '__main__':
test2()
异常输出:
Traceback (most recent call last):
File "F:/MyProgram/pythonProgram/Nike/ex_test.py", line , in test2
test1()
File "F:/MyProgram/pythonProgram/Nike/ex_test.py", line , in test1
raise Exception("ex test1")
Exception: ex test1 During handling of the above exception, another exception occurred: Traceback (most recent call last):
File "F:/MyProgram/pythonProgram/Nike/ex_test.py", line , in <module>
test2()
File "F:/MyProgram/pythonProgram/Nike/ex_test.py", line , in test2
raise Exception("ex test2")
Exception: ex test2
test1的异常还是输出了
python异常链的更多相关文章
- python 异常
引用一段来自菜鸟教程的文章:http://www.runoob.com/python/python-exceptions.html Python 异常处理 python提供了两个非常重要的功能来处理p ...
- java异常丢失及异常链
1.Java中异常丢失的情况: 先定义三个异常: public class ExceptionA extends Exception { public ExceptionA(String str) { ...
- #21 Python异常
前言 运行程序时经常遇到各种错误,例如:ImportError(导入模块错误).IndexError(索引错误).NameError(变量错误).SyntaxError(语法错误).Indentati ...
- Python异常和异常处理
Python异常和异常处理2017年12月20日 22:17:08 Megustas_JJC 阅读数:114 标签: python 异常处理 更多 个人分类: Python 版权声明:本文为博主原创文 ...
- java 异常链
1.) 常常会想要在捕获一个异常后抛出另一个异常,并且希望把原始异常的信息保存下来,被称为异常链. 2.)Throwable子类在构造器中可以接受一个cause(因由)对象作为参数.这个cause就是 ...
- “全栈2019”Java异常第十五章:异常链详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...
- python——异常except语句用法与引发异常
except: #捕获所有异常 except: <异常名>: #捕获指定异常 except:<异常名1,异常名2):捕获异常1或者异常2 except:<异常名>,< ...
- 笔记-python异常信息输出
笔记-python异常信息输出 1. 异常信息输出 python异常捕获使用try-except-else-finally语句: 在except 语句中可以使用except as e,然后通 ...
- 牛客网Java刷题知识点之什么是异常、异常处理的原理是什么、为什么要使用异常、异常体系、运行时异常、普通异常、自定义异常、异常链
不多说,直接上干货! 在这个世界不可能存在完美的东西,不管完美的思维有多么缜密,细心,我们都不可能考虑所有的因素,这就是所谓的智者千虑必有一失.同样的道理,计算机的世界也是不完美的,异常情况随时都会发 ...
随机推荐
- ASP.NET Core 入门(3)(单元测试Xunit及Shouldly的使用)
一.本篇简单介绍下在ASP.NET Core项目如何使用单元测试,例子是使用VS自带的Xunit来测试Web API接口,加上一款开源的断言工具Shouldly,方便写出更简洁.可读行更好的测试代码. ...
- sql 视图的好处
第一点:使用视图,可以定制用户数据,聚焦特定的数据. 解释: 在实际过程中,公司有不同角色的工作人员,我们以销售公司为例的话,采购人员,可以需要一些与其有关的数据,而与他无关的数据,对他没有任何意义, ...
- phpstorm+xdebug+mvc
前一段时间自己琢磨出来,今天又给忘了,还去t00ls发帖.... 写到这里备忘 拿这个yxcms举例子 版本: yxcms1.2.1 源码:http://pan.baidu.com/s/1pJM1CP ...
- win7登录密码破解方法(不用U盘)
前提:1.不借助U盘等工具.2.已将win7登录账户为test,密码为123456 1.将电脑开机关机几次,进入以下界面 2.然后点击启动修复(推荐),进入以下界面 3.接着就进入到以下界面,然后点击 ...
- 解决spring-boot-maven-plugin插件打包,springboot启动时报找不到主main问题
一:遇到的问题及解决方法 最近在搭建一个新项目时,使用spring-boot-maven-plugin插件打包,springboot项目在发布后启动时遇到找不到主main问题. 遇到这个问题当时感觉本 ...
- Linux下安装php报错:libxml2 not found. Please check your libxml2 installation
ubuntu/debian: apt-get install libxml2-dev centos/redhat: yum install libxml2-devel
- 服务器IP与个人IP的特点
服务器IP:系统类型.开放的端口及运行的服务.C段同类机器数量.是否机房.IDC服务商 个人IP:系统类型.开放的端口及运行的服务……
- idou老师教你学Istio 25:如何用istio实现监控和日志采集
大家都知道istio可以帮助我们实现灰度发布.流量监控.流量治理等功能.每一个功能都帮助我们在不同场景中实现不同的业务.那Istio是如何帮助我们实现监控和日志采集的呢? 这里我们依然以Bookinf ...
- python3 准备
一.前言 1.Python是著名的“龟叔”Guido van Rossum发明的 2.python分为python2和python3两大版本,python2渐渐被淘汰,建议使用python3 3.py ...
- Java基础 static限定符的使用 以及【 static实现的 singleton(单例)设计模式】
static实现的 singleton(单例)设计模式 /** static实现的 singleton设计模式 , 使得一个类只能够创建一个static对象 */ 模板设计结构: package Co ...