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

网站内页修改关键字抖音广告投放平台官网

网站内页修改关键字,抖音广告投放平台官网,自己做平台需要多少钱,室内装修设计费取费标准🎁个人主页:User_芊芊君子 🎉欢迎大家点赞👍评论📝收藏⭐文章 🔍系列专栏:【Java】内容概括 【前言】 在Java开发中,异常处理是保证程序健壮性的核心环节。新手常因忽视异常导致程序…

在这里插入图片描述

🎁个人主页:User_芊芊君子
🎉欢迎大家点赞👍评论📝收藏⭐文章
🔍系列专栏:【Java】内容概括

在这里插入图片描述
在这里插入图片描述
【前言】
在Java开发中,异常处理是保证程序健壮性的核心环节。新手常因忽视异常导致程序崩溃,老手也可能因滥用try-catch埋下性能隐患。本文将从异常本质出发,逐层拆解异常体系、处理机制、实战技巧与最佳实践,附带完整代码案例和可视化分析,帮你彻底掌握Java异常。

文章目录:

  • 一、什么是异常?
    • 1.异常的概念
    • 2.常见的异常
    • 3.异常的体系结构
    • 4.异常的分类
      • 4.1 编译时异常
      • 4.2运行时异常
  • 二、异常处理核心机制
    • 1.异常抛出-throw
    • 2.异常的声明-throws
    • 3.异常的捕获
    • 4.异常处理流程
  • 三、自定义异常类
  • 四、总结

一、什么是异常?

1.异常的概念

异常(Exception)是程序执行过程中发生的特殊情况或出现错误,他会打断程序正常流程。

类型父类定义示例是否可处理
Error(错误)Throw able虚拟机级别的严重问题,如内存溢出、栈溢出内存溢出(OutOfMemoryError)、栈溢出(StackOverflowError)❌ 不可处理,程序通常直接崩溃
Exception(异常)Throw able程序运行中的可预期问题,如空指针、文件不存在空指针异常(NullPointerException)、文件不存在异常(FileNotFoundException)✅ 可通过代码捕获并处理

2.常见的异常

  • 算术异常
public class Test {public static void main(String[] args) {System.out.println(100/0);}
}

在这里插入图片描述

  • 数组越界异常
public static void main(String[] args) {int[] array = {8,2,6};System.out.println(array[4]);}

在这里插入图片描述

  • 空指针异常
public static void main(String[] args) {int[] array = null;System.out.println(array.length);}

在这里插入图片描述

3.异常的体系结构

在这里插入图片描述

  • Java体系以Throwable为顶层父类,下设ErrorException两大部分,Exception又分为受查异常(编译时异常)和非受查异常(运行时异常)

  • Error是指Java虚拟机无法解决的严重问题,比如:Jvm内部错误,资源耗尽等

  • Exception:异常产生后,可以通过代码处理。

4.异常的分类

4.1 编译时异常

在这里插入图片描述

在这里插入图片描述

4.2运行时异常

RunTimeException以及其⼦类对应的异常,都称为运⾏时异常。⽐如:

  • NullPointerException
  • ArrayIndexOutOfBoundsException
  • ArithmeticException

二、异常处理核心机制

Java提供try , catch , finally , throw , throws五个关键字处理异常,流程:捕获异常,处理异常,释放资源

1.异常抛出-throw

在编译时,程序出现错误,就要用throw抛出异常,将错误信息告知调用者(eg:参数检测)。

throw new XXXException("异常产⽣的原因");

【注意】

  • throw必须写在⽅法体内部
  • 抛出的对象必须是Exception或者Exception的⼦类对象
  • 如果抛出的是RunTimeException或者RunTimeException的⼦类,则可以不⽤处理直接交给JVM来处理
  • 如果抛出的是编译时异常,⽤⼾必须处理,否则⽆法通过编译
  • 异常⼀旦抛出,其后的代码就不会执⾏

2.异常的声明-throws

如果方法体内部无法处理异常,可通过throws在方法签名上声明异常,将异常处理责任,交给调用者(受查异常必须声明)

public static void main(String[] args) throws FileAlreadyExistsException

【注意】

  • throws必须跟在⽅法的参数列表之后
  • 声明的异常必须是Exception或者Exception的⼦类
  • ⽅法内部如果抛出了多个异常,throws之后必须跟多个异常类型,之间⽤逗号隔开,如果抛出多个 异常类型具有⽗⼦关系,直接声明⽗类即可。
  • 调⽤声明抛出异常的⽅法时,如果该异常是编译时异常/受查异常时,调⽤者必须对该异常进⾏处理,或者继续使⽤throws抛出

3.异常的捕获

执行流程分析

  • 无异常时: try → 正常执行代码 → finally → 程序继续向下。

  • 有异常时: try 中异常代码处中断 → 匹配的 catch 处理 → finally → 程序继续向下。

  • 无匹配catch时: try → 异常抛出 → finally → 异常向上传递(如未处理,程序崩溃)

下面是一个找不到读取文件的异常:

import java.io.FileInputStream;
import java.io.FileNotFoundException;public class Dome {public static void func() throws FileNotFoundException {FileInputStream fileInputStream = new FileInputStream("路径");}public static void main(String[] args)throws FileNotFoundException {try {func();} catch (FileNotFoundException e) {e.printStackTrace();//打印异常信息System.out.println("找不到读取文件的异常,被捕获");} catch (NullPointerException e) {System.out.println("空指针异常");e.printStackTrace();//打印异常信息//与抛出的异常类型不匹配,就不会被捕获} catch (ArrayIndexOutOfBoundsException e) {System.out.println("数组下标越界异常");e.printStackTrace();//打印异常信息} catch (Exception e) {} finally {//处理资源关闭,避免浪费}}
}

【注意】

  • try块内抛出异常位置之后的代码将不会被执⾏
  • 如果抛出异常类型与catch时异常类型不匹配,即异常不会被成功捕获,也就不会被处理,继续往外抛,直到JVM收到后中断程序----异常是按照类型来捕获的
  • try中可能会抛出多个不同的异常对象,则必须⽤多个catch来捕获----即多种异常,多次捕获
  • 如果异常之间具有⽗⼦关系,⼀定是⼦类异常在前catch,⽗类异常在后catch
  • 无论try中是否发生异常,finally中的代码⼀定会执⾏的,⼀般在finally中进⾏⼀些资源清理的扫尾⼯作。但是如果finally 中也存在return语句,那么就会执⾏finally中的return,从⽽不会执⾏到try中原有的return

4.异常处理流程

  • 程序先执⾏try中的代码

  • 如果try中的代码出现异常,就会结束try中的代码,看和catch中的异常类型是否匹配.

  • 如果找到匹配的异常类型,就会执⾏catch中的代码

  • 如果没有找到匹配的异常类型,就会将异常向上传递到上层调⽤者.

  • ⽆论是否找到匹配的异常类型,finally中的代码都会被执⾏到(在该⽅法结束之前执⾏).

  • 如果上层调⽤者也没有处理的了异常,就继续向上传递.

  • ⼀直到main⽅法也没有合适的代码处理异常,就会交给JVM来进⾏处理,此时程序就会异常终⽌.

三、自定义异常类

自定义的登录功能,用户名异常和密码异常

public class Dome {private String name = "lasi";private String password = "88657";public void dome(String name, String password) throws UserNameErrorException,PassWordErrorException{if (!this.name.equals(name)) {throw new UserNameErrorException("用户名错误,发生异常");}if (!this.password.equals(password)) {throw new UserNameErrorException("密码错误,异常");}System.out.println("登录成功");}public static void main(String[] args) {Dome dome = new Dome();try {dome.dome("lasi","12345");}catch(UserNameErrorException e){e.printStackTrace();}catch (PassWordErrorException e){e.printStackTrace();}System.out.println("程序继续执行");}
}

在这里插入图片描述

  • 用户名异常
public class UserNameErrorException extends RuntimeException{public UserNameErrorException(){super();}public UserNameErrorException(String s){super(s);}
}
  • 密码异常
public class PassWordErrorException extends RuntimeException{public PassWordErrorException(){super();}public PassWordErrorException(String s){super(s);}
}

在这里插入图片描述
【注意】

  • ⾃定义异常通常会继承⾃Exception或者RuntimeException

  • 继承⾃Exception的异常默认是受查异常

  • 继承⾃RuntimeException的异常默认是⾮受查异常

四、总结

Java异常处理是程序健壮性的基石,核心在于:

  1. 理解异常体系:区分 Error (不可处理)和 Exception (可处理),明确受检/非受检异常的区别;

  2. 掌握核心语法: try-catch-finally 捕获处理, throw 主动抛出, throws 声明传递;

  3. 自定义异常:贴合业务场景,传递精准错误信息;

异常处理的本质不是“消灭异常”,而是“在异常发生时,让程序以可控、可预期的方式运行”。希望本文能帮你建立系统化的异常处理思维,写出更健壮的Java代码!

如果本文对你有帮助,欢迎点赞+收藏+关注,后续会持续更新Java核心技术干货~
在这里插入图片描述

http://www.dtcms.com/a/477729.html

相关文章:

  • Artstudio Pro for Mac 绘图与图片编辑软件
  • 上班没事做看什么网站wordpress主题官方
  • .NET Framework 4.0和Visual Studio 2010的串口通信类
  • 20自由度全驱动:赋能Tesollo五指灵巧手精细柔性作业新可能
  • 基于FastAPI与LangChain的Excel智能数据分析API开发实践
  • 【四级】全国大学英语四级历年真题及答案解析PDF电子版(2015-2025年6月)
  • 专业制造双轴倾角传感器与水平监测传感器的优质厂家分析
  • QtitanNavigation赋能工业制造:提升生产效率的界面导航利器
  • 网站不备案做优化网站建设 中软
  • 成都市建设厅网站查询建设部举报网站
  • 优秘智能深度学习应用场景实战提升效率指南
  • 【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
  • 做网站建议农业网站建设模板下载
  • xdma IP使用教程1-xdma ip核配置
  • Pytest参数化实战:高效测试API接口
  • 关于力扣第167场双周赛的第一二题赛后反思
  • Post-training of LLMs
  • 【学习总结】AI接口测试-零基础从接口概念到客达天下系统Apifox+DeepSeek接口测试实战全流程
  • 【苍穹外卖笔记】Day04--套餐管理模块
  • 初识redis(分布式系统, redis的特性, 基本命令)
  • [特殊字符] Avalonia + Silk.NET 加载 3D 模型时 GenBuffer 返回 0?这是个底层兼容性陷阱!
  • 学习threejs,打造交互式花卉生成器
  • Redis 学习笔记(二)
  • 北京展览馆网站建设wordpress插件排列
  • 北京做网站优化多少钱最基本最重要的网站推广工具是
  • 每日算法刷题Day70:10.13:leetcode 二叉树10道题,用时2h
  • MySQL 设置远程 IP 连接方式(含自动检测授权脚本)
  • flash型网站网址高校思政课网站建设
  • 网站建设费做什么会计科目硬件开发外包平台
  • 【SpringBoot从初学者到专家的成长15】MVC、Spring MVC与Spring Boot:理解其差异与联系