07|【30岁前端转型全栈】前后端遇到报错怎么处理?当然是console.log和System.out.println?

前言

大家好,我是歌谣✨ B 站、知乎、C 站、抖音多平台同步更新,专注 AI 背景下的后端技术学习。

最好的种树是十年前,其次是现在。 我是一名热爱写作、坚持持续学习的技术革新者。 深耕 Java 后端、工作流引擎、项目实战,结合 AI 时代的技术趋势,拆解工程落地、源码与业务架构。

能关注到我的,大多是热爱学习、年轻上进的技术伙伴。 欢迎私信一起交流后端、探讨技术问题,结伴学习,共同成长。

背景

一、为什么不能只靠 console.log 和 System.out.println

前端 console.log

  • 优点:随手写,浏览器控制台立刻能看到。
  • 缺点:
    • 调试完要手动删,容易漏。
    • 复杂对象打印不全,嵌套深了显示 [Object]。
    • 异步、循环里打印太多,控制台刷屏。
    • 生产环境不能留。

后端 System.out.println

  • 优点:零依赖,新手最快上手。
  • 缺点:
    • 没有日志级别(INFO/DEBUG/ERROR)。
    • 没有时间戳、线程名、类名、traceId。
    • 无法按包/环境控制输出。
    • 高并发下性能差,可能拖慢接口。
    • 生产环境基本不可用。

所以,打印可以用,但只能应急 。真正要定位问题,得引入断点 和日志框架。

操作

二、前端:从 console.log 到浏览器断点

1. 基础打印

js

javascript 复制代码
console.log('user:', user);console.error('请求失败:', err);console.table(list);// 表格展示数组

2. debugger 语句

在代码里写:

js

ini 复制代码
debugger;

打开浏览器 DevTools,代码运行到这里会自动暂停,效果等同于手动打断点。

3. 浏览器 DevTools 断点

打开 Chrome/Edge DevTools → Sources 面板:

  • 在左侧文件树找到源码,点击行号,出现蓝色标记,就是行断点。
  • 触发后,右侧会显示:
    • Scope:当前作用域变量
    • Call Stack:调用栈
    • Watch:手动添加要监视的表达式
  • 顶部控制按钮:
    • Resume:继续运行
    • Step Over:单步跳过
    • Step Into:进入函数
    • Step Out:跳出函数

4. 高级断点

  • 条件断点 :右键行号 → Add conditional breakpoint,比如 i === 100 才停。
  • 日志断点:右键行号 → Add logpoint,不暂停,只输出日志,相当于"不删代码的 console.log"。
  • 异常断点 :在 Sources 面板右侧的 Breakpoints 里勾选 Pause on caught exceptions,抛出异常时自动暂停。
  • XHR/Fetch 断点:在 Sources → XHR/Fetch Breakpoints 里加 URL 关键字,请求发出时暂停。

5. Network 面板

接口报错先看 Network:

  • 请求 URL、方法、参数
  • 响应状态码(400/401/500)
  • 响应体(后端返回的错误信息)
  • 请求头(token、content-type)

这样能快速判断是前端传错,还是后端返回错。


三、后端:从 System.out.println 到 IDE 断点

1. 用日志框架代替 System.out.println

推荐 SLF4J + Logback ,Lombok 的 @Slf4j 最方便:

java

less 复制代码
@Slf4j@ServicepublicclassUserService{publicvoidcreate(User user){        log.info("创建用户, userId={}, name={}", user.getId(), user.getName());        log.debug("详细参数: {}", user);try{// ...}catch(Exception e){            log.error("创建用户失败, userId={}", user.getId(), e);}}}

好处:

  • 有级别:info、debug、warn、error
  • 有时间、线程、类名
  • 可配置输出到文件、按天切割
  • 生产环境可通过配置关闭 debug

2. IDE 断点(以 IntelliJ IDEA 为例)

  • 在代码行号左侧点击,出现红点,就是行断点。
  • 以 Debug 模式启动项目,请求触发后程序暂停。
  • 调试面板:
    • Frames:调用栈
    • Variables:当前变量值
    • Watches:监视表达式
  • 控制按钮:
    • Resume:继续
    • Step Over:单步跳过
    • Step Into:进入方法
    • Step Out:跳出方法
    • Evaluate Expression :临时执行表达式,比如 req.getProjectCode()

3. 高级断点

  • 条件断点 :右键红点 → Condition,填 req.getProjectCode().equals("P001"),只有满足条件才停。
  • 异常断点 :Run → View Breakpoints → 添加 Java Exception Breakpoint,比如 NullPointerException,抛出时自动暂停。
  • 方法断点:在方法签名行打断点,进入/退出方法时暂停。
  • 字段断点:在字段上打断点,读写该字段时暂停。
  • 日志断点:右键断点 → 取消 Suspend,勾选 Evaluate and log,不暂停只打印,适合生产排查。

以gmanage项目为例

1启动nacos

2启动后端服务

3启动前端4前端断点5后端断点

结语

  • console.log 和 System.out.println 是入门级打印,适合快速看值,但不能长期留在代码里。
  • 前端用 DevTools 断点 + Network 面板 ,后端用 IDE 断点 + 日志框架。
  • 断点的核心价值:不修改代码,暂停程序,查看现场,单步执行。
  • 真正的高手,不是不用打印,而是知道什么时候打印、什么时候断点、什么时候看日志和监控。

记住一句话:

打印是手电筒,断点是显微镜,日志是监控摄像头。

往期回顾

05|【30岁前端转型全栈】spring注解那么多?心烦意乱?怎么学?

04|【30岁前端转型全栈】历时四月 我开始搭建全栈的前后端系统

03|【30岁前端转型全栈】30 岁跳出前端内卷!零基础进军 Java 全栈真实实战

相关推荐
对象存储与RustFS1 小时前
HelixDB 上手:Agent 记忆新方案,基于 RustFS 对象存储,附完整 docker-compose 部署示例
后端·rust·开源
深入云栈1 小时前
Netty 4.2.x 源码深度解析 (十八):ChannelOutboundBuffer 写缓冲区 —— 发送队列与流量控制
java·后端·架构
谢亮_vipxieliang1 小时前
Go gRPC基础与实战
开发语言·后端·golang
god_cvz1 小时前
第二章:5、RAG进阶优化
后端·ai编程
今年下半年1 小时前
【低成本埋点统计】Spring Boot+vue2前后端分离项目统计系统访问、使用、登录次数
spring boot·后端·状态模式
codigger1 小时前
Java 26 深度解析:一次“性能兑现 + 契约收紧”的版本
java·后端·编程·编程语言
盖世英雄酱581362 小时前
格式化成日期为什么提前一天呢,同样的时间点还是非必现???
java·后端
威哥爱编程2 小时前
【AI全栈12-05】Spring Boot 用 Tool Calling 让 AI 查实时订单与库存
java·spring boot·后端
用户298698530142 小时前
Python 实战:将 HTML 内容保存为图像文件
后端·python·html