讲师中心 微信公众号
AI工具推荐 视频效率加速

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

阿雪姑娘_4238

阿雪姑娘_4238

发布时间: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设置为这个自定义函数,这样,所有的未捕获异常都会经过它的处理。关闭分页是为了防止在控制台输出过多信息。

macOS UI 自动化技能包 —— 用 Python 控制你的 Mac
macOS UI 自动化技能包 —— 用 Python 控制你的 Mac

让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限

下载

如何在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大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

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

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

1029

2023.10.18

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

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

3200

2023.10.25

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

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

1838

2023.08.03

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

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

2924

2023.09.04

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

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

6224

2023.10.24

字符串介绍
字符串介绍

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

6109

2023.11.24

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

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

7694

2024.03.22

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

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

11594

2024.04.29

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

100

2026.10.28

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Go语言教程-全程干货无废话
Go语言教程-全程干货无废话

共100课时 | 18.1万人学习

第三期培训_PHP开发
第三期培训_PHP开发

共116课时 | 33万人学习

PHP开发APP接口项目实战
PHP开发APP接口项目实战

共20课时 | 3.5万人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn