当前位置: 首页 > news >正文

IDEA中的异常

//java.lang.ArrayIndexOutOfBoundsException(数组的下标越界异常)
//java.lang.StringIndexOutOfBoundsException(字符串的下标越界)
//java.lang.IndexOutOfBoundsException(下标越界的异常)
//java.lang.NullPointerException(空指针异常)
//java.lang.ClassCastException(类型转换异常)//java.lang.NumberFormatException(数字的格式转换异常)
//手动的产生异常
throw new RuntimeException("程序因为异常而被终止....");

一、异常的基本概念(Java 层面)

Java 中的异常分为两类:

二、IDEA 中处理异常的实用功能

1. 自动提示异常处理

当代码中存在未处理的受检异常时,IDEA 会在代码下方标红,并在左侧显示错误图标。

2. 快速生成 try-catch 块
3. 异常调试(Debug)

IDEA 的调试功能可高效定位异常:

4. 异常信息提示

运行程序时若抛出异常,IDEA 会在 Run 或 Debug 窗口显示异常堆栈信息:

5. 自动补全异常相关代码
    1. 受检异常(Checked Exception):编译期必须处理(捕获或声明抛出),如 IOExceptionSQLException
    2. 非受检异常(Unchecked Exception):继承自 RuntimeException,编译期不强制处理,如 NullPointerExceptionIndexOutOfBoundsException
    • 鼠标悬停在错误处,会提示 “Unhandled exception: XXX”。
    • 按 Alt + Enter(Windows/Linux)或 Option + Enter(Mac),IDEA 会提供处理建议:
      • Surround with try/catch:自动生成 try-catch 块捕获异常。
      • Add throws declaration:在方法签名上添加 throws 声明,将异常抛给上层处理。
    • 选中需要捕获异常的代码段,按 Ctrl + Alt + T(Windows/Linux)或 Cmd + Alt + T(Mac),在弹出的菜单中选择 try/catch,IDEA 会自动包裹并生成对应异常的捕获块。
    • 生成的 catch 块默认捕获具体异常,也可选择捕获父类异常(如 Exception),但不推荐(可能掩盖具体错误)。
    • 断点调试:在可能抛出异常的代码行设置断点(单击行号左侧),启动调试(Shift + F9),执行到断点时可查看变量状态。
    • 异常断点:通过 Run -> View Breakpoints(或 Ctrl + Shift + F8)打开断点窗口,点击 + 选择 Java Exception Breakpoints,输入异常类名(如 NullPointerException),调试时一旦抛出该异常会自动暂停,便于追踪根源。
    • 堆栈信息中加粗的行是异常发生的具体位置,点击可直接跳转到对应代码。
    • 鼠标悬停在异常类名上,会显示该异常的说明文档(需配置 JDK 文档)。
    • 输入 try 后按 Tab 或回车,IDEA 会自动生成 try-catch 或 try-with-resources(Java 7+,用于自动关闭资源,如流)的模板。
    • 6. 检查异常处理的合理性

      IDEA 的代码检查功能(Code -> Inspect Code)会提示异常处理的潜在问题:

    • 例如:捕获异常后未做任何处理(仅 e.printStackTrace() 可能被忽略)、不必要的异常捕获(捕获了不会抛出的异常)等。
    • 三、常见问题与技巧

    • 忽略特定异常的检查:若确认某些受检异常无需处理(不推荐),可在方法上声明 throws Exception,但可能降低代码可读性。
    • 自定义异常模板:通过 File -> Settings -> Editor -> Live Templates 可自定义异常相关的代码模板,提高编码效率。
    • 异常链追踪:当异常被包装(如 throw new RuntimeException(e)),IDEA 的堆栈信息会显示完整的异常链,帮助定位原始错误。
http://www.dtcms.com/a/609267.html

相关文章:

  • 基于脚手架微服务的视频点播系统-脚手架开发部分(完结)elasticsearch与libcurl的简单使用与二次封装及bug修复
  • 【ZeroRange WebRTC】Kinesis Video Streams WebRTC 三大平面职责与协同关系总结
  • Git:进阶、衍生
  • 深度智能体的中间件
  • 中文分词全切分算法
  • 11月10日ES本机
  • 网络营销的基本职能医院seo是什么
  • PLB-TV 影视!无广告 + 4K 高清
  • 网站背景自动变色做简历比较好的网站
  • 播放PCM音频增益低+单独增强PCM解码的方案
  • C++篇(16)C++11(下)
  • 全新ZipArchives插件:可在ONLYOFFICE协作空间中解压ZIP文件
  • 【PRML】支持向量机
  • 龙岩网站建设哪里比较好长春网站排名优化公司
  • 服务器建设网站软件下载南京站建设
  • 重组融合蛋白技术概述
  • Java_自定义泛型类/接口/方法
  • EG2106 高端电压600V 半桥MOS管栅极驱动芯片技术解析
  • 上位机开发之JSON文件编辑器(动态UI)
  • Git 本地操作入门:版本控制基础、跨平台部署与仓库核心流程
  • Docker 缓存优化:通过 cpolar 内网穿透服务远程管理 Redis
  • 微算法科技(NASDAQ MLGO)在委托权益证明DPoS主链上引入PoW轻节点验证,提升抗量子攻击能力
  • 前缀和与差分数组
  • 微官网和移动网站区别网站设计行业前景
  • dw网站的站点建设阿里巴巴网站图片怎么做
  • 智慧判官-分布式编程评测平台
  • 基于 HT 技术的汽车制造车间数字孪生可视化系统
  • TOMCAT Docker 容器化部署指南
  • 自己做网站去哪买服务器天猫网站设计
  • React Native 自定义 ScrollView 滚动条:开箱即用的 IndicatorScrollView(附源码示例)