0

0

Jupyter Notebook中:如何定制异常可视化输出格式?

星夢妙者

星夢妙者

发布时间:2025-06-26 10:20:02

|

296人浏览过

|

来源于php中文网

原创

1.在jupyter notebook中,可使用try...except块捕获异常,并通过traceback.format_exception格式化异常信息;2.使用ipython.excepthook定义全局异常处理函数custom_exception_handler,设置sys.excepthook实现未捕获异常的统一处理;3.通过ipython.display.html将异常信息渲染为html,实现高亮显示效果;4.利用traceback.extract_stack提取堆栈信息并限制输出层数,保留关键部分提升可读性;5.使用logging模块配置日志记录,将异常信息写入文件以便后续分析。

Jupyter Notebook中:如何定制异常可视化输出格式?

在Jupyter Notebook中,定制异常的可视化输出格式,简单来说,就是让你看到的报错信息更清晰、更友好,而不是一堆难以理解的堆栈信息。

Jupyter Notebook中:如何定制异常可视化输出格式?

定制异常可视化输出,让调试更高效。

Jupyter Notebook中:如何定制异常可视化输出格式?

如何捕获和格式化异常?

在Jupyter Notebook里,最直接的方法就是使用try...except块。但仅仅捕获异常还不够,我们需要对异常信息进行格式化。可以自定义一个函数,专门用于格式化异常信息,然后在except块中调用它。

import traceback

def format_exception(e):
    """格式化异常信息,使其更易读。"""
    exception_list = traceback.format_exception(None, e, e.__traceback__)
    exception_string = "".join(exception_list)
    return exception_string

try:
    1 / 0
except Exception as e:
    formatted_exception = format_exception(e)
    print(formatted_exception)

这段代码的核心在于traceback.format_exception,它能将异常信息转换为一个字符串列表,方便我们进行后续处理。当然,你也可以根据自己的需求,添加更多的格式化逻辑,比如高亮显示关键信息。

Jupyter Notebook中:如何定制异常可视化输出格式?

使用IPython.excepthook定制全局异常处理

如果想对所有未捕获的异常进行统一处理,可以使用IPython.excepthook。这允许你定义一个全局的异常处理函数,当程序出现未捕获的异常时,会自动调用该函数。

import sys
from IPython.core import ultratb

def custom_exception_handler(shell, etype, evalue, tb, tb_offset=None):
    """自定义全局异常处理函数。"""
    shell.showtraceback((etype, evalue, tb), tb_offset=tb_offset)  # 默认行为
    print("发生了一个错误!请检查你的代码。")

import IPython
IPython.get_ipython().pt_show_in_pager = False # 关闭分页
sys.excepthook = custom_exception_handler

这里,我们首先定义了一个custom_exception_handler函数,它接收异常类型、异常值、堆栈信息等参数。在这个函数里,你可以做任何你想做的事情,比如记录日志、发送邮件、或者显示更友好的错误提示。然后,我们将sys.excepthook设置为这个自定义函数,这样,所有的未捕获异常都会经过它的处理。关闭分页是为了防止在控制台输出过多信息。

Python v2.4 中文手册 chm
Python v2.4 中文手册 chm

Python v2.4版chm格式的中文手册,内容丰富全面,不但是一本手册,你完全可以把她作为一本Python的入门教程,教你如何使用Python解释器、流程控制、数据结构、模板、输入和输出、错误和异常、类和标准库详解等方面的知识技巧。同时后附的手册可以方便你的查询。

下载

如何在Jupyter Notebook中高亮显示异常信息?

仅仅是格式化异常信息还不够,如果能高亮显示关键信息,那就更好了。可以使用IPython.display模块来实现这一点。

from IPython.display import HTML, display

def format_exception_html(e):
    """格式化异常信息为HTML,并高亮显示关键信息。"""
    exception_list = traceback.format_exception(None, e, e.__traceback__)
    exception_string = "".join(exception_list)
    # 使用HTML标记高亮显示
    html = f"<pre class="brush:php;toolbar:false;" style='color:red;'>{exception_string}
" return html try: 1 / 0 except Exception as e: html_exception = format_exception_html(e) display(HTML(html_exception))

这段代码将异常信息格式化为HTML,并使用红色高亮显示。IPython.display.HTML可以将HTML代码渲染到Jupyter Notebook中,从而实现高亮显示的效果。你可以根据自己的喜好,修改HTML样式,比如改变颜色、字体、背景等等。

如何在Jupyter Notebook中隐藏部分堆栈信息?

有时候,堆栈信息太长,我们只想看到最关键的部分。可以使用traceback模块的extract_stack函数来提取堆栈信息,并只显示最后几层。

import traceback

def format_exception_short(e):
    """格式化异常信息,只显示最后几层堆栈信息。"""
    extracted_stack = traceback.extract_stack()
    # 只显示最后3层堆栈信息
    formatted_stack = extracted_stack[-3:]
    formatted_lines = traceback.format_list(formatted_stack)
    exception_string = "".join(formatted_lines) + repr(e)
    return exception_string

try:
    def inner_function():
        raise ValueError("Something went wrong")
    def outer_function():
        inner_function()
    outer_function()
except Exception as e:
    formatted_exception = format_exception_short(e)
    print(formatted_exception)

这里,我们使用traceback.extract_stack提取堆栈信息,然后只保留最后3层。traceback.format_list将堆栈信息格式化为字符串列表,方便我们进行后续处理。

如何在Jupyter Notebook中记录异常日志?

除了显示异常信息,记录异常日志也是一个好习惯。可以使用logging模块来实现这一点。

import logging

# 配置日志
logging.basicConfig(filename='error.log', level=logging.ERROR,
                    format='%(asctime)s - %(levelname)s - %(message)s')

try:
    1 / 0
except Exception as e:
    logging.error(f"An error occurred: {e}")
    print("An error occurred. See error.log for details.")

这段代码将异常信息记录到error.log文件中。logging.basicConfig用于配置日志,可以设置日志文件名、日志级别、日志格式等等。logging.error用于记录错误信息。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

492

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

382

2023.10.25

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

760

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

221

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1566

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

649

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

1228

2024.03.22

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

1184

2024.04.29

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Django 教程
Django 教程

共28课时 | 4.9万人学习

MySQL 教程
MySQL 教程

共48课时 | 2.5万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号