Python抛出引发异常(raise)知识点总结
- 格式:docx
- 大小:37.67 KB
- 文档页数:3
一文看懂Python异常处理(exception,try和raise语句)一个Python程序在运行时,如果解释器遇到到一个错误,会停止程序的执行,并且提示一些错误信息,这就是异常(Exception)。
即便Python程序的语法是正确的,还是会有各种各样意想不到的异常或错误。
大多数的异常都不会被程序处理,而是以错误信息的形式展现出来,如下所示:>>> 10 * (1/0)Traceback (most recent call last):File '<stdin>', line 1, in ?ZeroDivisionError: division by zero>>> 4 + spam*3Traceback (most recent call last):File '<stdin>', line 1, in ?NameError: name 'spam' is not defined>>> '2' + 2Traceback (most recent call last):File '<stdin>', line 1, in ?TypeError: Can't convert 'int' object to str implicitly异常以不同的类型出现,这些类型都作为信息的一部分打印出来: 例子中的类型有 ZeroDivisionError,NameError 和 TypeError。
Python的内建异常Python的一些常见內建异常如下所示,这些都是你必须熟知和掌握的。
Exception 常规错误的基类AttributeError 对象没有这个属性IOError 输入/输出操作失败IndexError 序列中没有此索引(index)KeyError 映射中没有这个键NameError 未声明/初始化对象 (没有属性)SyntaxError Python 语法错误TypeError 对类型无效的操作ValueError 传入无效的参数ZeroDivisionError 除(或取模)零 (所有数据类型) 完整内置异常见下图:异常处理没有异常处理的特点是出现异常会终止程序执行。
Python(⼋)——异常(概念、捕获、传递、抛出)异常的概念捕获异常异常的传递抛出异常异常的概念程序在运⾏时,如果Python 解释器遇到到⼀个错误,会停⽌程序的执⾏,并且提⽰⼀些错误信息,这就是异常程序停⽌执⾏并且提⽰错误信息这个动作,我们通常称之为:抛出(raise)异常捕获异常1、简单的捕获异常语法在程序开发中,如果对某些代码的执⾏不能确定是否正确,可以增加try(尝试)来捕获异常捕获异常最简单的语法格式try:尝试执⾏的代码except:出现错误的处理try尝试,下⽅编写要尝试代码,不确定是否能够正常执⾏的代码except如果不是,下⽅编写尝试失败的代码例如:要求⽤户输⼊整数try:# 提⽰⽤户输⼊⼀个数字num = int(input("请输⼊数字:"))except:print("请输⼊正确的数字")2、错误类型捕获在程序执⾏时,可能会遇到不同类型的异常,并且需要针对不同类型的异常,做出不同的响应,这个时候,就需要捕获错误类型了语法如下:try:# 尝试执⾏的代码passexcept错误类型1:# 针对错误类型1,对应的代码处理passexcept (错误类型2, 错误类型3):# 针对错误类型2 和 3,对应的代码处理passexcept Exception as result:print("未知错误 %s" % result)当Python解释器抛出异常时,最后⼀⾏错误信息的第⼀个单词,就是错误类型异常类型捕获演练 —— 要求⽤户输⼊整数需求:1. 提⽰⽤户输⼊⼀个整数2. 使⽤8除以⽤户输⼊的整数并且输出try:num = int(input("请输⼊整数:"))result = 8 / numprint(result)except ValueError:print("请输⼊正确的整数")except ZeroDivisionError:print("除 0 错误")捕获未知错误在开发时,要预判到所有可能出现的错误,还是有⼀定难度的如果希望程序⽆论出现任何错误,都不会因为Python解释器抛出异常⽽被终⽌,可以再增加⼀个except 语法如下:except Exception as result:print("未知错误 %s" % result)3、异常捕获完整语法在实际开发中,为了能够处理复杂的异常情况,完整的异常语法如下:try:# 尝试执⾏的代码passexcept错误类型1:# 针对错误类型1,对应的代码处理passexcept错误类型2:# 针对错误类型2,对应的代码处理passexcept (错误类型3, 错误类型4):# 针对错误类型3 和 4,对应的代码处理passexcept Exception as result:# 打印错误信息print(result)else:# 没有异常才会执⾏的代码passfinally:# ⽆论是否有异常,都会执⾏的代码print("⽆论是否有异常,都会执⾏的代码")else只有在没有异常时才会执⾏的代码finally⽆论是否有异常,都会执⾏的代码之前⼀个演练的完整捕获异常的代码如下:try:num = int(input("请输⼊整数:"))result = 8 / numprint(result)except ValueError:print("请输⼊正确的整数")except ZeroDivisionError:print("除 0 错误")except Exception as result:print("未知错误 %s" % result)else:print("正常执⾏")finally:print("执⾏完成,但是不保证正确")简单⽅式看看:try:a = 5/0print(a)except Exception as e:print('出现异常,执⾏我')else:print('没有出现异常,执⾏我')finally:print('不管咋样,我都要执⾏')异常的传递异常的传递 —— 当函数/⽅法执⾏出现异常,会将异常传递给函数/⽅法的调⽤⼀⽅如果传递到主程序,仍然没有异常处理,程序才会被终⽌提⽰:在开发中,可以在主函数中增加异常捕获⽽在主函数中调⽤的其他函数,只要出现异常,都会传递到主函数的异常捕获中这样就不需要在代码中,增加⼤量的异常捕获,能够保证代码的整洁需求1. 定义函数demo1()提⽰⽤户输⼊⼀个整数并且返回2. 定义函数demo2()调⽤demo1()3. 在主程序中调⽤demo2()def demo1():return int(input("请输⼊⼀个整数:"))def demo2():return demo1()try:print(demo2())except ValueError:print("请输⼊正确的整数")except Exception as result:print("未知错误 %s" % result)抛出raise异常应⽤场景在开发中,除了代码执⾏出错Python解释器会抛出异常之外还可以根据应⽤程序特有的业务需求主动抛出异常也就是⾃⼰定义⼀个异常抛出异常Python中提供了⼀个Exception异常类在开发时,如果满⾜特定业务需求时,希望抛出异常,可以:1. 创建⼀个Exception的对象2. 使⽤raise关键字抛出异常对象需求定义input_password函数,提⽰⽤户输⼊密码如果⽤户输⼊长度 < 8,抛出异常如果⽤户输⼊长度 >=8,返回输⼊的密码def input_password():# 1. 提⽰⽤户输⼊密码pwd = input("请输⼊密码:")# 2. 判断密码长度,如果长度 >= 8,返回⽤户输⼊的密码if len(pwd) >= 8:return pwd# 3. 密码长度不够,需要抛出异常# 1> 创建异常对象 - 使⽤异常的错误信息字符串作为参数ex = Exception("密码长度不够")# 2> 抛出异常对象raise extry:user_pwd = input_password()print(user_pwd)except Exception as result:print("发现错误:%s" % result)。
python3中try异常调试raise异常抛出 ⼀、什么是异常? 异常即是⼀个事件,该事件会在程序执⾏过程中发⽣,影响了程序的正常执⾏。
⼀般情况下,在Python⽆法正常处理程序时就会发⽣⼀个异常。
异常是Python对象,表⽰⼀个错误。
当Python脚本发⽣异常时我们需要捕获处理它,否则程序会终⽌执⾏。
常见异常 # AttributeError 调⽤不存在的⽅法引发的异常 # EOFError 遇到⽂件末尾引发的异常 # ImportError 导⼊模块出错引发的异常 # IndexError 列表⽉越界引发的异常 # IOError I/O操作引发的异常,如打开⽂件出错等 # KeyError 使⽤字典中不存在的关键字引发的异常 # NameError 使⽤不存在的变量名引发的异常 # TabError 语句块缩进不正确引发的异常 # ValueError 搜索列表中不存在值引发的异常 # ZeroDivisionError 除数为零引发的异常 ⼆、基础异常处理 捕捉异常可以使⽤try/except语句,见下例⼦。
try/except语句⽤来检测try语句块中的错误,从⽽让except语句捕获异常信息并处理。
如果你不想在异常发⽣时结束你的程序,只需在try⾥捕获它。
try的⼯作原理是,当开始⼀个try语句后,python就在当前程序的上下⽂中作标记,这样当异常出现时就可以回到这⾥,try⼦句(与try同级的except等)先执⾏,接下来会发⽣什么依赖于执⾏时是否出现异常。
如果当try后的语句执⾏时发⽣异常,python就跳回到try并执⾏第⼀个匹配该异常的except⼦句,异常处理完毕,控制流就通过整个try语句(除⾮在处理异常时⼜引发新的异常)。
如果在try后的语句⾥发⽣了异常,却没有匹配的except⼦句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。
python中raise 的用法Python中raise的用法1. 引言在Python中,raise是一个关键字,用于手动抛出异常。
通过使用raise关键字,我们可以主动触发异常,并在程序中处理这些异常情况。
本文将介绍raise的用法和一些常见的用例。
2. 语法raise语句的基本语法如下:raise [ExceptionClassName[(arguments)]]其中,ExceptionClassName是Python内置的异常类或自定义的异常类的名称,arguments是可选的参数,用于向异常类传递附加的信息。
3. 用法示例下面是一些常见的raise用法的示例:抛出指定类型的异常raise ValueError("Invalid value!")上述代码将会抛出一个ValueError异常,并携带字符串”Invalid value!“作为异常信息。
使用预定义的异常类raise ValueError这种情况下,将会抛出一个ValueError异常,但不会携带异常信息。
自定义异常类class CustomError(Exception):passraise CustomError("Custom error message")在上述代码中,我们定义了一个自定义异常类CustomError,然后使用raise语句抛出一个CustomError异常,并传递了一个自定义的错误信息。
4. raise和异常处理通过使用raise关键字,我们可以在程序中主动触发异常,然后使用异常处理机制捕获和处理这些异常。
下面是一个简单的例子:try:raise ValueError("Invalid value!")except ValueError as e:print("Caught ValueError:", str(e))在上述代码中,我们使用raise语句抛出了一个ValueError异常,然后在except语句块中捕获并处理该异常,打印出错误信息。
python raise 用法Python中的raise语句用法详解1. 引言在Python中,raise是一个关键字,用于手动引发异常。
我们可以使用raise语句来显式地触发异常,从而在程序中进行错误处理或控制流程。
2. raise的基本用法•raise后面可以跟一个异常类的实例来引发异常。
例如,raise ValueError("Invalid value")会引发一个ValueError异常,同时传递一条错误消息。
•使用raise语句时,可以不指定异常类,只传递一条错误消息。
例如,raise Exception("Something went wrong")会引发一个通用的Exception异常。
3. 自定义异常除了使用内置的异常类之外,我们还可以自定义异常类,以便更好地满足我们的需求。
自定义异常类可以继承自内置异常类或自定义异常类。
class CustomException(Exception):passtry:raise CustomException("This is a custom exception") except CustomException as e:print(e)4. 携带异常信息当使用raise语句引发异常时,可以携带更多的异常信息。
例如,我们可以使用raise语句携带一个异常对象,并在异常对象中设置一些特定的属性。
class CustomException(Exception):passtry:exc = CustomException("Something went wrong")_code = 42raise excexcept CustomException as e:print(e)print(_code)5. 再次引发异常在异常处理过程中,我们可以选择捕获并处理异常,或者重新引发该异常,使其被上层的异常处理程序捕获。
Python抛出引发异常(raise)知识点总结Python中try块可以捕获测试代码块中的错误。
except块可以处理错误。
finally块可以执⾏代码,⽽不管try-和except块的结果如何。
本⽂主要介绍Python 抛出引发异常(raise)。
Python 常⽤术语抛出引发异常(raise)作为Python开发⼈员,可以在某些情况下引发异常。
要抛出(或引发)异常,请使⽤raise关键字。
例如:当x⼩于0时,抛出异常并停⽌程序:x = -1if x < 0:raise Exception("x需要是⼤于等于0的数字")raise关键字⽤于引发异常。
可以定义引发哪种错误,以及向⽤户显⽰⽂本。
例如:如果x不是整数,则引发TypeError:x = "hello"if not type(x) is int:raise TypeError("只允许是整数")实例扩展:try:s = Noneif s is None:print("s 是空对象")# 如果引发NameError异常,后⾯的代码将不能执⾏raise NameError# 这句不会执⾏,但是后⾯的except还是会⾛到print(len(s))except TypeError:print("空对象没有长度")s = Noneif s is None:raise NameError# 如果不使⽤try......except这种形式,那么直接抛出异常,不会执⾏到这⾥print("is here?")到此这篇关于Python抛出引发异常(raise)知识点总结的⽂章就介绍到这了,更多相关Python 抛出引发异常(raise)⽤法内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
Python中的异常处理和错误处理机制Python是一种高级语言,广泛应用于各种应用场景中——从Web 应用到机器学习和科学计算。
在这些应用中,不可避免地会出现各种错误和异常。
因此,Python中内置了异常处理机制,以帮助程序员识别和解决这些错误和异常。
本文将深入探讨Python中的异常处理和错误处理机制,其中包括异常的概念、Python中的异常类别、使用try-except语句捕获和处理异常、以及向调用者抛出异常等主题。
一、异常的概念在Python程序运行期间,发生了不可预料的错误或异常情况,比如尝试除以零,打开不存在的文件或导入不存在的模块等,此时程序将抛出异常。
异常是指程序运行期间遇到的错误情况。
使用Python的异常处理机制,程序员可以捕获(capture)这些异常并在程序中处理它们。
在Python中,每个异常都是一个对象,它是Exception或其派生类的实例。
当Python程序中的代码发生异常时,就会创建并抛出特定类型的异常对象。
Python提供了许多不同的异常类,如ZeroDivisionError、IOError、ImportError、TypeError、ValueError和NameError等。
程序员可以根据实际需要来选择异常类,并根据异常类型做出处理。
二、Python中的异常类别Python中的异常类别包括查找异常、其他异常和系统退出异常。
查找异常是指在代码中查找名称和属性时发生的异常,如NameError和AttributeError。
其他异常包括了各种错误情况,比如除以零和类型错误等。
系统退出异常用于表示程序中止或关闭,如KeyboardInterrupt和SystemExit。
在Python中,所有的异常都是Exception类的子类。
即使是查找异常和系统退出异常,也是通过派生Exception类来实现的。
程序员也可以创建自定义的异常,以满足特定的需求。
三、使用try-except语句捕获和处理异常程序员可以通过使用try-except语句来捕获和处理Python中的异常。
代码中调用了会抛出异常的方法在代码中调用会抛出异常的方法时,需要使用适当的异常处理机制来捕获和处理这些异常。
这样可以确保程序在遇到错误时不会崩溃,而是能够以适当的方式处理错误。
下面是一些处理异常的常用方法:1. 使用try-except块捕获异常:在调用可能抛出异常的方法之前,可以使用try-except块来捕获和处理异常。
例如:```pythontry:result = some_method()except SomeException as e:print("发生异常:", e)```在上面的代码中,如果`some_method()`抛出`SomeException`异常,则会执行except块中的代码,打印出异常信息。
2. 使用raise关键字引发异常:在某些情况下,你可能需要在代码中手动引发异常。
可以使用`raise`关键字来引发一个异常。
例如:```pythonif some_condition:raise SomeException("异常信息")```在上面的代码中,如果满足某个条件,则会引发`SomeException`异常,并传递一个字符串作为异常信息。
3. 使用assert语句进行断言检查:在某些情况下,你可能希望使用断言来检查某个条件是否为真。
如果条件为假,则引发一个异常。
例如:```pythonassert some_condition, "条件不满足"```在上面的代码中,如果`some_condition`为假,则会引发一个`AssertionError`异常,并传递一个字符串作为异常信息。
这些是处理异常的一些常见方法。
根据具体情况选择适合的方法来处理异常,以确保程序的稳定性和可靠性。
Python异常处理的相关知识Python异常处理:山重水复疑无路,柳暗花明又一村在Python编程中,异常处理是一种非常重要的方式。
Python的异常处理机制有助于处理各种运行时错误,如文件找不到、输入错误、网络错误以及许多其他类型的错误。
在本文中,我们将介绍Python异常处理的相关知识。
什么是异常?在程序中,异常指的是在运行程序期间发生的不可预测的事件,导致程序无法正常执行。
在Python中,异常是指某个代码块中的错误或异常情况,例如:文件不存在、数组超出范围、浮点数除以零等。
Python异常处理机制Python具有一种很好的异常处理机制,可以让程序员在程序出现错误时进行处理。
Python程序通常会抛出异常,而不是终止运行。
程序员可以使用try-except语句捕捉异常并处理它们。
以下是Python 异常处理机制的基本组成部分:1. try语句块:在try块内,我们指定了要监视的异常类型。
2. except语句块:当try语句块内发生异常时,程序会跳转到except语句块并执行其中的代码。
3. finally语句块:无论异常是否被捕获,都会执行这个块内的代码。
让我们看一下以下代码:try:#打开一个不存在的文件file = open("test.txt", "r")#文件存在,执行以下代码块print("File opened successfully")except FileNotFoundError:#文件不存在,执行以下代码块print("File not found")finally:#无论上面的代码是否执行成功,总是会执行该块中的代码print("File operation completed")在这个例子中,我们尝试打开一个文件,但文件不存在。
因此,我们收到一个FileNotFoundError异常。
python主动抛出异常和⾃定义异常⼀、主动抛出异常 raisePython 使⽤ raise 语句抛出⼀个指定的异常。
raise 唯⼀的⼀个参数指定了要被抛出的异常。
它必须是⼀个异常的实例或者是异常的类(也就是 Exception 的⼦类)。
如下:x = 10if x > 5:raise Exception('x 不能⼤于 5。
x 的值为: {}'.format(x))结果如下:Traceback (most recent call last):File "test.py", line 3, in <module>raise Exception('x 不能⼤于 5。
x 的值为: {}'.format(x))Exception: x 不能⼤于5。
x 的值为: 10如果你只想知道这是否抛出了⼀个异常,并不想去处理它,那么⼀个简单的 raise 语句就可以再次把它抛出。
try:raise NameError('HiThere')except NameError:print('An exception flew by!')raise⼆、⾃定义异常⾃定义类必须继承Exception,⾃定义异常如下:class MySQLError(Exception):def __init__(self, error_info):super(MySQLError, self).__init__(error_info)self.error_info = error_infodef __str__(self):return self.error_info使⽤如下:try:raise MySQLError('异常')except MySQLError as e:print(e)结束!。
Python抛出引发异常(raise)知识点总结Python中的抛出异常(raise)是一种在代码中手动引发错误的机制。
它允许开发者在遇到特定情况时中断程序流程,并提供一条自定义的错误
消息。
抛出异常的过程包括创建异常对象和使用raise语句将其引发。
以
下是对Python抛出异常的知识点的详细总结:
1.异常概述:
异常是指程序在运行过程中遇到的错误或异常情况,它们可以分为内
置异常和自定义异常。
内置异常像NameError、TypeError和ValueError 等,它们在Python中已经定义好了;自定义异常是使用raise语句自定
义的异常。
无论是内置异常还是自定义异常,它们都是Exception类或其
子类的实例。
2. raise语句基本用法:
raise语句用于引发异常,分为两种用法。
一种是直接引发一个内置
异常,并可提供异常描述信息,如raise ValueError("Invalid value");另一种是引发自定义异常,如raise CustomException("Custom message")。
在raise语句中,通过实例化一个异常类来创建异常对象,
参数可以是自定义的异常描述信息,也可以是其他变量或对象。
3.内置异常类:
Python中有很多内置的异常类,常见的包括IndexError(索引错误)、KeyError(键错误)、ValueError(值错误)、TypeError(类型
错误)、NameError(名称错误)等等。
这些异常类都是Exception类的
子类,可以直接使用它们进行错误处理,也可以通过继承Exception类来
自定义新的异常类。
4.自定义异常类:
自定义异常类允许开发者基于自己的需要创建异常类型,以便更好地描述代码中的特定错误或异常情况。
创建自定义异常类的步骤包括定义一个继承Exception类的子类,重写构造函数及其他方法(如__str__)以提供自定义的异常描述信息,然后使用raise语句引发该异常。
5.异常处理:
当Python代码引发异常时,如果没有进行相应的异常处理,程序将中断并显示错误信息。
为了避免这种情况,可以使用try-except语句来捕获异常并处理。
try块中放置可能引发异常的代码,而except块则用于指定异常类型,并提供相应的处理代码。
如果没有发生异常,except 块将被跳过。
6.多重异常处理:
在使用try-except语句时,可以同时处理多种异常类型。
可以提供多个except块,每个块处理一种异常类型,也可以在一个块中处理多个异常类型。
如果一个异常类型的处理代码与另一个异常类型的处理代码相同,可以将多个异常类型放在同一个except块中。
7.异常的传递:
当一个异常在一层代码中引发,在上层代码中没有被处理时,它将继续向上层传递,直到遇到一个合适的异常处理代码。
如果在整个调用堆栈中都没有找到适当的异常处理代码,程序将终止并显示错误信息。
这种异常的传递机制允许开发者在合适的地方捕获和处理异常,避免程序崩溃。
8. finally块:
在异常处理中,有时候需要确保一些代码无论是否发生异常都会执行。
这种情况下,可以使用finally块。
不管try块中是否发生异常,
finally块中的代码都会被执行。
通常在finally块中放置资源释放的代码,如文件关闭和数据库连接的关闭。
总结:
抛出异常(raise)是Python中一种用于手动引发错误的机制,它可
以用于自定义异常和处理内置异常。
抛出异常的目的是中断程序流程并提
供错误消息。
在使用抛出异常时,需要实例化异常类,并通过raise语句
将异常引发。
同时,在代码中使用try-except语句捕获异常,以避免程
序崩溃。
了解和掌握异常处理机制是Python开发中非常重要的一部分,
可以帮助开发者更好地进行错误处理和代码调试。