《零基础学Python》异常处理与程序调试【九】

整体文章目录

整体目录

一、 当前章节目录

在这里插入图片描述

二、异常的处理

2.1 Python中的异常

在这里插入图片描述

2.2 try…except的使用

try:
    open("hello.txt", "r")              # 尝试读取一个不存在的文件
    print("读文件")
except FileNotFoundError:               # 捕获FileNotFoundError异常
    print("文件不存在")
except:                                 # 其他异常情况
    print("程序异常")

运行结果:

文件不存在

try:
    result = 10/0
except ZeroDivisionError:               # 捕获除数为0的异常
    print("0不能被整除")
else:                                   # 若没有触发异常则执行以下代码
    print(result)

运行结果:

0不能被整除

try:
    s = "hello"
    try:                                # 嵌套异常
        print(s[0] + s[1])
        print(s[0] - s[1])
    except TypeError:
        print("字符串不支持减法运算")
except:
    print("异常")

运行结果:

he
字符串不支持减法运算

2.3 try…finally的使用

# finally错误的用法
# try:
#     f = open("hello.txt", "r")
#     print("读文件")
# except FileNotFoundError:               # 捕获FileNotFoundError异常
#     print("文件不存在")
# finally:                                # 其他异常情况
#     f.close()



try:
    f = open("hello.txt", "r")
    try:
        print(f.read(5))
    except:
        print("读取文件错误")
    finally:                            # finally子句一般用于释放资源
        print("释放资源")
        f.close()
except FileNotFoundError:
    print("文件不存在")

运行结果:

文件不存在

2.4 使用raise抛出异常

try:
    s = None
    if s is None:
        print("s是空对象")
        raise NameError
    print(len(s))
except TypeError:
    print("空对象没有长度")

运行结果:

s是空对象
NameError

2.5 自定义异常

from __future__ import division                 # 导入division模块

class DivisionException(Exception):             # 自定义异常
    def __init__(self, x, y):
        Exception.__init__(self, x, y)
        self.x = x
        self.y = y

if __name__ == "__main__":
    try:
        x = 3
        y = 2
        if x % y > 0:
            print(x / y)
            raise DivisionException(x, y)       # 抛出异常
    except DivisionException as div:
        print("DivisionException: x / y = %.2f" % (div.x / div.y))

运行结果:

1.5
DivisionException: x / y = 1.50

2.6 assert语句的使用

t = ("hello",)
assert len(t) >= 1
t = ("hello")
assert len(t) == 1

运行结果:

AssertionError

# 带message的assert语句
month = 13
assert 1 <= month <= 12, "month errors"

运行结果:

AssertionError: month errors

2.7 异常信息

def fun():                  # 定义除法运算函数
    a = 10
    b = 0
    return a / b

def format():               # 定义格式化输出函数
    print("a / b = " + str(fun()))

if __name__ == "__main__":
    format()

运行结果:

ZeroDivisionError: division by zero

import sys

try:
    x = 10 / 0
except Exception as ex:
    print(ex)
    print(sys.exc_info())

运行结果:

division by zero
(<class ‘ZeroDivisionError’>, ZeroDivisionError(‘division by zero’), 0x0000024789D33B00>)

三、使用自带IDLE调试程序

def fun():
    a = 10
    b = 0
    return a / b
def fot():
    print("a / b = " + str(fun()))

四、使用Eclipse IDE调试程序

4.1 新建工程

4.2 配置调试

4.3 设置断点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值