Python,异常 exception

同Java一样,Pyton异常对象来表示异常情况。遇到错误后,引发异常,如果异常对象并未对处理或捕捉,程序就会用所谓的回溯(Traceback)来终止执行;

>>> 1/0

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

ZeroDivisionError: division by zero

程序可以通过raise Exceptin来手动抛出异常

>>> raise Exception

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

Exception

>>> raise Exception("hello exception")

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

Exception: hello exception

自定义异常类型,只需要继承Exception(或其子类)即可;

>>> raise 1

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

TypeError: exceptions must derive from BaseException

不同于C++,只有异常类才能被抛出;

>>> class MyException(Exception):

... pass

...

>>> raise MyException

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

__main__.MyException

捕获异常

try:

….

except ExceptionType1 as e:

….

except ExceptionType2:

….

raise

except (ExceptionType3, ExceptionType4):

….

except:

else:

finally:

不带参数的raise用于重新抛出异常;exception (ExceptionType3, ExceptionType4)相比与Java的单参数方式更方便了;

不带参数的except捕捉所有类型的异常,但是得不到异常对象,可以使用except BaseException as e 解决(或者Exceptin)

>>> try:

... 1/0

... except BaseException as e:

... print(e)

...

division by zero

else的块在没有引发异常时执行;finally同java;

>>> try:

... 1/0

... except ZeroDivisionError as e:

... print(e)

...

division by zero

>>> try:

... 1/0

... finally:

... print(‘finally‘)

...

finally

Traceback (most recent call last):

File "<stdin>", line 2, in <module>

ZeroDivisionError: division by zero

>>> def f():

... try:

... return 1/0

... finally:

... return 2

...

>>> f()

2

时间: 2024-10-11 10:21:24

Python,异常 exception的相关文章

理解Python语言里的异常(Exception)

Exception is as a sort of structured "super go to".异常是一种结构化的"超级goto". 作为一个数十年如一日地钟爱C语言的程序员(因为C程序员需要记忆的关键字很少,而且可以很惬意地玩内存),对于高级语言如Python里的异常(Exception)一直不甚理解,尤其是其实现机理.但读了<Learning Python>一书中上面这句话(尤其是goto关键字)后,忽然豁然开朗. 如果用C语言编写一个鲁棒性良

python 异常知识点

raise from python 在3.0 之后引入了raise from 表达式: raise exception from otherexception 当使用该语法时,第二个表达式指定了另一个异常类或实例,它会附加到引发异常的__cause__属性 注意: python3.0不再支持raise Exc,Args形式,而该形式在Python2.6中仍然可用,在Python3.0中,使用 raise Exc(Args)调用. with  as with语句格式: with expressio

Python 九、Python异常

一.python异常 1.Python异常 python运行时发生错误称作异常 语法错误:软件的结构上有错误而导致不能被解释器解释或不能被编译器编译 逻辑错误:由于不完整或不合法的输入所致,也可能是逻辑无法生成.计算或者输出结果需要的过程无法执行等 Python异常是一个对象,表示错误或意外情况 在Python检测到一个错误时,将触发一个异常 Python可以通过异常传导机制传递一个异常对象,发出一个异常情况出现的信号 程序员也可以在代码中手动触发异常 Python异常也可以理解为:程序出现了错

Python异常

异常的概念: Python运行时的错误 语法错误:软件结构上错误而导致不能被解释器解释或不能被编译器编译 逻辑错误:由于不完整或不合法的输入导致,也可能是逻辑无法生成,计算或者输出结果需 要的过程无法执行等 Python的异常是一个对象,表示错误或者意外情况 在Python检测到一个错误时,将触发一个异常 Python可以通过异常传导机制传递一个异常对象,发出一个异常情况出现的信号 程序员也可以在代码中手动触发异常 Python的异常也可以理解为:程序出现了错误而在正常控制流之外采取行为 一.解

python——异常except语句用法与引发异常

except: #捕获所有异常 except: <异常名>: #捕获指定异常 except:<异常名1,异常名2):捕获异常1或者异常2 except:<异常名>,<数据>:捕获指定异常及其附加的数据 except:<异常名1,异常名2>:<数据>:捕获异常名1或者异常名2,及附加的数据库 常用异常名: 异常名    描述 AttributeError 调用不存在的方法引发的异常 EOFError     遇到文件末尾引发的异常 Impor

Python异常和文件读写

Python异常 1.python异常的完整语法 try: # 提示用户输入一个整数 num = int(input("输入一个整数:")) # 使用 8 除以用户输入的整数并且输出 result = 8 / num print(result) except ValueError: print("请输入正确的整数!") except Exception as result: print("未知错误:%s" % result) else: prin

浅谈java异常[Exception]

本文转自:focusJ 一. 异常的定义 在<java编程思想>中这样定义 异常:阻止当前方法或作用域继续执行的问题.虽然java中有异常处理机制,但是要明确一点,决不应该用"正常"的态度来看待异常.绝对一点说异常就是某种意义上的错误,就是问题,它可能会导致程序失败.之所以java要提出异常处理机制,就是要告诉开发人员,你的程序出现了不正常的情况,请注意. 记得当初学习java的时候,异常总是搞不太清楚,不知道这个异常是什么意思,为什么会有这个机制?但是随着知识的积累逐渐也

python 中exception,class学习

python 中exception,class 学习 instroduction: Object2 = Object1 ( like java) if Object1 is class object , then copy by reference; if Object1 is basic type, then copy by value 1. exception 主要结构: try: exception ValueError: exception ZeroDivisionError: exce

PL/SQL 08 异常 exception

--PL/SQL错误  编译时  运行时 --运行时的出错处理  EXCEPTION --异常处理块DECLARE -BEGIN -EXCEPTION WHEN OTHERS THEN  handler_error(-);END; --用户自定义的异常DECLARE e_TooManyStudents EXCEPTION; -BEGIN - RAISE e_TooManyStudents; -EXCEPTION WHEN e_TooManyStudents THEN  -END; --预定义的O

异常Exception in thread &quot;AWT-EventQueue-XX&quot; java.lang.StackOverflowError

今天太背了,bug不断,检查到最后都会发现自己脑残了,粗心写错,更悲剧的是写错的时候还不提示错. 刚才有遇到一个问题,抛了这个异常Exception in thread "AWT-EventQueue-XX" java.lang.StackOverflowError XX有好几个值,我遇到了2,7,20,其实他们都是一个错,StackOverflowError,对,就是栈溢出,为什么会栈溢出呢?我遇到的问题是我写了一个方法,又自己去调用自己,造成了递归,而这个递归又停不下来,造成了栈溢