python高级教程(1)-try except finally

欢迎来到python大讲堂,打开你的IDE开始python之旅吧!

语法错误

python在运行时可能会出现一些错误,我们首先来讲语法错误

语法错误也就是解析错误,看看下面的例子:

for i in range(10)
    print(i)

这里明显少加了一个冒号,引发的错误如下所示:

    for i in range(10)
                     ^
SyntaxError: invalid syntax

Process finished with exit code 1

在错误的地方会标一个小箭头,也就是出错的地方,exit code 1就代表因为错误结束程序,exit code 0就是程序正常执行完成结束,exit code -1就是手动结束程序。

异常

有时候你的语法是正确的,但是运行期间发生了错误,像下面这样:

print(1/0)

这句语句显然语法没有问题,但是仔细观察后会发现不能将0作为被除数,报错如下:

Traceback (most recent call last):
    print(1/0)
ZeroDivisionError: division by zero

traceback就代表异常,上面这里引发了ZeroDivisionError,也就是被除数不能为0的错误。

处理异常

try:
    x = int(input("Please enter a number: "))
except ValueError:
    print("invalid number!")
  • 首先执行try下的语句,如果没有发生错误,则跳过except
  • 如果发生了异常,那么如果异常名称与except后的名称一样就执行except
  • 如果名称与except后的名称不匹配,则抛出错误

接下来你可以试着输入#或者*之类的东西,你会看到这样的结果:

Please enter a number: #
invalid number!

Process finished with exit code 0

这时程序也会正常结束,接下来试着把这段程序改一下:

try:
    x = int(input("Please enter a number: "))
except ZeroDivisionError:
    print("invalid number!")

这时候你会得到:

Please enter a number: #
Traceback (most recent call last):
    x = int(input("Please enter a number: "))
ValueError: invalid literal for int() with base 10: '#'

因为这时异常名称不匹配,所以抛出异常,再这样改:

try:
    x = int(input("Please enter a number: "))
except ZeroDivisionError:
    print(‘No zero!')
except ValueError as e:
    print(e)
    print("invalid number!")
    raise
except:
    print('unknown error!')

你可以把最后一个except当作处理所有错误的语句,其次通过在except后面加上as e(随便你起)就可以通过print(e)的方式打印出异常了。

raise就是抛出异常,因此你会看到在你输入#号时,同时输出了异常,invalid number!和抛出异常:

Please enter a number: #   
invalid literal for int() with base 10: '#'     #输出异常
Traceback (most recent call last):
invalid number!     #输出invalid number!
    x = int(input("Please enter a number: "))
ValueError: invalid literal for int() with base 10: '#'     #抛出异常

except还有一个可选的else自句,在try没有发生错误时执行,这里就不再赘述

我们还能自定义异常类型和输出的东西,像这样:raise ValueError('invalid number')

finally子句

还有一个可选的finally语句,见下:

try:
    x = int(input("Please enter a number: "))
except ValueError:
    raise ValueError('ValueError')
finally:
    print('finally')

结果:

Please enter a number: #
Traceback (most recent call last):
finally     #输出finally
    x = int(input("Please enter a number: "))
ValueError: invalid literal for int() with base 10: '#'     #抛出异常

结束啦!下次见!

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,try-except是一种异常处理机制,用于捕获和处理可能发生的异常。它的基本语法如下: ```python try: # 可能会引发异常的代码块 except ExceptionType1: # 处理 ExceptionType1 类型的异常 except ExceptionType2: # 处理 ExceptionType2 类型的异常 else: # 如果没有发生任何异常,执行这个代码块 finally: # 无论是否发生异常,都会执行这个代码块 ``` 在try代码块中,你可以放置可能会引发异常的代码。如果在try代码块中发生了异常,程序会立即跳转到对应的except代码块,并执行相应的异常处理逻辑。如果没有发生异常,则会执行else代码块中的代码。 在except代码块中,你可以指定要捕获的异常类型。如果发生了指定类型的异常,程序会执行对应的except代码块。如果没有指定异常类型,则会捕获所有类型的异常。 在finally代码块中,你可以放置无论是否发生异常都需要执行的代码。无论是否发生异常,finally代码块中的代码都会被执行。 下面是一个使用try-except的示例: ```python try: num1 = int(input("请输入一个整数: ")) num2 = int(input("请输入另一个整数: ")) result = num1 / num2 print("结果为:", result) except ValueError: print("输入的不是整数,请重新输入!") except ZeroDivisionError: print("除数不能为0,请重新输入!") else: print("计算完成!") finally: print("程序结束!") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值