Python之try-except异常处理和raise主动抛出异常

一、异常

在Python程序执行过程中发生的异常可以通过try语句来检测,可以把需要检测的语句放置在try块里 面,try块里面的语句发生的异常都会被try语句检测到,并抛出异常给Python解释器,Python解释器会寻找能处理这一异常的代码,并把当前异 常交给其处理。这一过程称为捕获异常。如果Python解释器找不到处理该异常的代码,Python解释器会终止该程序的执行。

python中通常使用try语句来处理异常。try语句有两种形式:一种是try—except;一种是try—finally。也可以是try— except—finally的组合。一个try语句可以对应一个或多个except语句,但只能对应一个finally子句。finally子句的作用 是不管异常有没有发生,该语句块的代码都会被执行。这样就可以把一些不管异常有没有发生,都必须要执行的代码放置到finally子句块中。

二、try-except-finally异常处理

1. try-except

语法格式:

try:
    尝试执行的代码
except:
    出现错误的处理

示例如下:

try:
    num = int(input('请输入一个数字:'))
except:
    print('请输入正确的整数!')

2. try-except-finally

语法格式:

try:
    尝试执行的代码
expect 错误类型1:
    出现错误1的处理方式
expect 错误类型2:
    出现错误2的处理方式

示例:需求(1.提示用户输入一个整数   2.使用8来除以用户输入的数)

try:
    num = int(input('输入一个整数:'))
    result = 8 / num
    print(result)
except ZeroDivisionError:
    print('分母不能为0')
except ValueError:
    print('输入的数不是合法整数')
except Exception as e:
    print('未知错误 %s' %(e))
finally:
    print('~~~~~~~~~~~~~~~')

Python之try-except异常处理和raise主动抛出异常_第1张图片

三、raise主动抛出异常

使用raise语句主动抛出异常的意思是开发者可以自己制造程序异常,这里的程序异常不是指发生了内存溢出、列表越界访问等系统异常,而是指程序在执行过程中,发生了用户输入的数据与要求数据不符、用户操作错误等问题,这些问题都需要程序进行处理并给出相应的提示。处理这些问题多使用判断语句,在判断语句体内进行相应的问题处理,如果处理问题的语句过多,就会导致代码复杂化,代码结构不够清晰。在这种情况下,可以使用raise语句主动抛出异常,由异常处理语句块进行处理。

示例:提示用户输入密码 如果长度小于8位就抛出异常

def input_passwd():
    pwd = input('密码:')
    if len(pwd) >= 8:
        return pwd

    print('主动抛出异常')
    ex = Exception('密码长度不足!')
    raise ex
    # raise Exception('密码长度不足')   #raise异常名称(‘异常描述’),其中异常名称是python提供的标准异常中的任何一种

try:
    print(input_passwd())
except Exception as r:  #Exception可以将所有的异常包括在内;将异常赋予变量r
    print(r)

Python之try-except异常处理和raise主动抛出异常_第2张图片

你可能感兴趣的:(try-except,raise主动抛出异常,try异常处理)