java 异常(上)

Java的异常 运行时异常是指在程序运行过程中可能会出现的异常,这些异常通常是由程序逻辑错误引起的,而不是外部环境或用户输入造成的。这些异常通常是由外部环境或用户输入造成的,程序员需要在代码中显式地处理这些异常,以确保程序的稳定性和可靠性。在这个示例中,我们展示了一个可能抛出文件未找到异常和IO异常的情况,并使用try-catch块来捕获并处理这些异常。一般在service层处理受检异常,通过创建一个自定义的异常类,在需要的地方抛出自定义异常即可。可以直接在service层的最外层进行抛出异常或者直接捕获异常并处理异常。 阅读详情

之前我们介绍的类,接口,枚举都是在表示和操作数据,操作的过程中可能有很多出错的情况,出错的原因是多方面的,有的是不可控的内部原因,比如磁盘满了,内存不足,有些是不可控的外部原因,比如网络连接中断,更多的可能是程序编写错误,比如引用变量未初始化就直接调用实例方法。

public static void main(String[] args) { String s = null; s.indexOf("a"); System.out.println("end"); }

java 系统执行到s.indexOf("a") 发现s的值为null,没有办法继续往下执行了,这时就启用异常机制,首先创建一个异常对象,这里是类NullPointerException,然后查找谁能处理这个异常,在代码中,没有代码能处理这个异常,java启用默认处理机制,那就是打印异常栈信息到屏幕,并退出程序。

java默认异常处理机制是退出程序,所以后面的打印end不会执行,

throw关键字可以与return 关键字进行对比,return 代表正常退出,throw代表异常退出,return的返回位置是确定的,就是上一层调用者,而throw位置则是不确定的,由异常处理机制动态确定,异常处理机制会从当前函数开始查找,看谁捕获了这个异常,当前函数没有就看上一层,直到主函数,如果主函数也没有,则就使用默认机制,即输出异常栈信息并退出,这就是我们在屏幕中看到的,对于屏幕中的异常信息,用户看不明白,所以就需要给用户一个更友好的信息。

例:

public static void main(String[] args)
  {
  if (args.length < 1)
  {
   System.out.print("请输入数字");
  }
 
  try
  {
   int num = Integer.parseInt(args[0]);
   System.out.println(num);
  }
  catch(NumberFormatException e)
  {
   System.err.println("参数" + args[0] + "不是有效的数字,请输入数字");
  }
 
  System.out.print("继续执行");

  }

结果:

参数abc不是有效的数字,请输入数字
继续执行

捕获异常后,程序不会异常退出,程序会继续执行异常外的代码。

异常类体系

1. 以Throwable 为根,java API定义了非常多的异常类,表示各种类型的异常,Exception 分为运行时异常和编译行异常,编译性异常类似IOEXCEPTION ,在编译时就必须处理,否则程序编译失败,Error 由java系统自己调用,应用程序不应抛出和处理。






【异常】JAVA常见异常 受检异常需要在编译时处理,而非受检异常通常是在运行时抛出,并且不强制要求在编译时处理。这些异常在编译时必须要处理,通常需要使用 try-catch 块或在方法签名中声明。当应用程序试图通过字符串名称加载类时,如果在类路径中找不到对应的类,则抛出此异常。当方法在不适当的时刻被调用时抛出。当试图将字符串转换为数值类型时,如果字符串的格式不正确,则抛出此异常。通常在输入输出操作失败或中断时抛出,比如文件操作、网络通信等。这些异常在编译时不强制要求处理,通常在运行时抛出。当试图将对象强制转换为不兼容的类型时抛出。 阅读详情

相关推荐

Java 异常处理 -- Java 语言的异常、异常链与断言

世界上存在永远不会出错的程序吗?也许这只会出现在程序员的梦中。随着编程语言和软件的诞生,异常情况就如影随形地纠缠着我们,只有正确处理好意外情况,才能保证程序的可靠性。

栗筝i的博客 5211

启动微服务,后台一直报Java.lang.NumberFormatException: For input string “0商品的下架“,报错一直没停止。

引起该异常的直接原因:我在生产者中开始存入的消息是非存数字的字符串,后面又在java代码中把存入的消息改为了存数字,但是在队列中已经存在的代码改之前的消息并没有因为更改代码后而被消费。这样启动消费者时就一直报错(简单说就是存入的消息内容有问题,不能被消费)。 引起该异常的根本原因:开始存入队列的消息为非存数字的字符串,在消费者获取队列消息时消费不了。所以后台就一直报数字格式异常。 我的解决方案:登录mq的客户端直接删除队列,重启生产者和消费者就解决了。 ...

小东学java 2045

IC验证 AHB-RAM 项目(二)——接口与事务代码的编写

本文介绍了准备工作及接口、事务相关代码编写要点。在接口部分,重点说明了lvc_ahb_if.sv、rkv_ahbram_if.sv和rkv_ahbram_tb.sv三个关键文件的功能,其中rkv_ahbram_if.sv通过动态任务实现复位信号控制。事务部分则涉及lvc_ahb_types.sv中的枚举类型定义和lvc_ahb_transaction.sv中的随机化变量设置,用于构建AHB传输激励。整个验证环境采用模块化设计,通过接口实现TB与DUT的通信,为后续验证工作奠定基础。

weixin_45926435的博客 405

eui更新java错误,java.lang.StackOverflowError: stack size 1036KB 错误

机型:锤子T2版本:5.1.1SDK版本:2.2.5java.lang.StackOverflowError: stack size 1036KB at com.easemob.cloud.HttpClientConfig.getDefaultUserAgent(Unknown Source) at com.easemob.cloud.HttpClientConfig.getDefaultHttp...

weixin_39615596的博客 1069

【上海大学计算机组成原理实验报告】七、程序转移机制

学习实现程序转移的硬件机制//掌握堆栈寄存器的使用//手动方式实现子程序调用转移过程//手动方式实现子程序返回转移过程//编程实现`OUT`寄存器交替显示`11`和`55`//若要求`11`和`55`各显示`50`次后停机,应该如何修改程序?//根据实验指导书的相关内容,实验箱系统的程序转移硬件机制在于,当`LDPC`有效时,如果此时`DUBS`上的值就是转移的目标地址,则此目标地址被打入`PC`,从而实现程序的转移;若`LDPC`为`0`是附带条件的,就形成“条件转移”。

HackerKevon的博客 2473

PT静态时序分析实战:从基础命令到高级报告解析

本文详细介绍了PT(PrimeTime)静态时序分析(STA)的实战技巧,从基础命令如pt_shell和report_timing的使用,到高级报告解析与问题排查。通过丰富的实例和脚本示例,帮助工程师快速掌握时序分析的核心技能,提升芯片设计验证效率。

weixin_29289821的博客 954

java.lang.NumberFormatException: For input string: ""解决方案

Service 层代码 public Route findOne(String rid) { //routeDao findOne Route route = routeDao.findOne(Integer.parseInt(rid.trim())); List<RouteImg> routeImg = routeImageDao.f...

qq_41753944的博客 7万+

Axure RP 9在Windows 11环境下的高效安装与配置指南

本文提供Axure RP 9在Windows 11系统下的详细安装步骤与配置指南。针对Win11安全特性,从获取官方安装资源、调整系统权限,到定制化安装路径、精准汉化及性能优化,系统性地解决了安装闪退、汉化失败、运行卡顿等常见问题,确保用户获得稳定流畅的原型设计体验。

mango的博客 480

java.lang.NumberFormatException: For input string: ""

1.传参字段和映射字段不一致 2.传参类型和映射类型不一致 3.时间类型转换时间戳长度不一致 4.参数长度和数据库不一致

贱气逼人的博客 4万+

Docker 实战:使用 Docker Desktop 在 MacOS 上安装 Docker

在这采用 Docker Desktop 在 Mac 上来安装 Docker。Docker Desktop 是 Docker 的管理桌面 IDE,提供了一个直观的GUI(图形用户界面),允许您直接在本机上管理容器、应用程序以及镜像。适用于 Mac、Linux 以及 Windows 环境,允许您构建、共享和运行容器化应用程序和微服务。Docker Desktop 可以大大降低在复杂配置上的时间,因此您可以专注于编写代码。它负责端口映射、文件系统问题和其他默认设置,并定期更新 Bug 修复和安全更新。

SmartSi 8006

EXCEL VBA从入门到精通 前言

本书通过丰富的实例和案例,帮助读者更好地理解和应用Excel VBA编程,同时也介绍了常用的工具、资源、社区和协作平台等,方便读者进行进一步的学习和开发。我强烈推荐这本书给所有希望学习和掌握Excel VBA编程的读者。多样化的资源和工具介绍:本书介绍了丰富的工具和资源,包括官方文档、在线教程、代码库、论坛、博客等,方便读者进行进一步的学习和开发。详细的讲解和丰富的示例:本书从语法和对象开始讲解,通过丰富的实例和案例,帮助读者更好地理解和应用Excel VBA编程。第一节:什么是VBA 5。

1728

【java】java.lang.NumberFormatException: For input string: " " 错误

java.lang.NumberFormatException: For input string: " " 错误 异常 出现原因是 在把 String 转 int 时,当 String 有空格 会报这个错误 解决 : //方法一: // String 模块中的trim()函数会剔除掉字符串中的空格 String str = " 0 1 1"; int i = new Integer().pars...

qq_43259305的博客 3万+

25、BDS-3卫星信号性能与PPP-B2b增强消息完整性分析

本文对BDS-3卫星信号性能及PPP-B2b增强消息的完整性进行了系统分析。评估了MEO、IGSO和GEO卫星的轨道与时钟精度,得出BDS-3总体SISRE为0.25 m,系统完整性可覆盖99.999%的误差。分析表明SIS中断主要由时钟调整和轨道机动引起,个别卫星存在因境外监测受限导致的非计划中断。通过自研解码软件对PPP-B2b增强消息进行采集与解析,实验结果显示BDS-3和GPS的平均历元完整性率均高于98.55%,其中卫星掩码和时钟校正消息的完整性率超过99.8%。研究还发现IGSO卫星相比MEO卫

quiet的专栏 145

Java异常

Java异常的讲解

熵减玩家 987

MAC-H3C官网inode客户端下载安装

MAC-H3C官网inode客户端下载安装

兴趣是最好的老师 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【java】认识异常,理解异常,掌握异常

文章目录 1️⃣异常的背景 1.认识异常 2.避免异常的两种方式 2️⃣异常的基本用法 1.基本语法 2.多个 catch 块 3.使用共同父类 Exception 捕获异常 4.关于异常的错误输出 5.关于异常的调用链 6.关于 finally 代码块 7.使用 try 回收资源 8.一组关键字:throw 和 throws 9.异常处理流程总结 3️⃣异常体系结构 受查异常 4️⃣自定义异常类

Welcome to my blog. 1071

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【Java】认识异常

自定义异常:我们自己定义维护符合我们实际需要的异常结构。//登入if(!System.out.println("用户名错误!");if(!System.out.println("密码错误!");他的密码输入错误,结果输出如上。如果我们想要在我们输错时报出异常,这时,我们可以自己定义一个异常,用户名输入错误异常和密码输入错误异常;我们可以定义一个输入错误异常类和密码输入错误异常类来继承运行时异常super();super(m);super();super(m);

2301_80543957的博客 2258

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Java——异常

在我们日常生活中,我们可能会生病,会头疼,会肚子疼,打球的时候也可能会受伤。再程序中也是一样,运行时难免会出现一些奇奇怪怪的问题。在Java中,将程序执行过程中发生的不正常行为称为异常。算数异常//算数异常数组越界异常//数组越界异常空指针异常//空指针异常在Java中不同类型的异常,都有与其对应的类来进行描述。程序先执行 try 中的代码如果 try 中的代码出现异常, 就会结束 try 中的代码, 看和 catch 中的异常类型是否匹配.

m0_74100417的博客 1550

java java 检查型异常_Java异常——异常分类、声明检查型异常

一、异常的分类1、在Java程序设计语言中,异常对象都是派生于Throwable类的一个类的实例。如果Java的内置类不能满足需求,用户还可以创建自己的异常类。2、异常分为两支,Error和Exception。Error类层次描述了Java运行时系统的内部错误和资源耗尽错误。这种情况很少出现,如果出现了这种情况,就只能通知用户并妥善地终止程序。Exception类是应该重点关注的层次结构。3、Ex...

weixin_29688535的博客 3145

JAVA 异常

明白异常到底是什么?—>异常就是类知道异常的体系 / 知道异常的分类在编写程序时,如果程序中出现错误,此时就需要将错误的信息告知给调用者,比如:参数检测。在Java中,可以借助throw关键字,抛出一个指定的异常对象,将错误信息告知给调用者。具体语法如下:throw new XXXException(“异常产生的原因”);throw new NullPointerException("传递的数组为null");

2301_80934700的博客 1409

【Java异常】Java异常监控重要手段 --异常链

异常链”无论是在框架源码中还是在日常项目开发中,都是一项非常重要的对异常处理的手段。以下摘抄自《Java编程思想》对异常链的介绍:常常会想要在①捕获一个异常后抛出另一个异常②并且希望把原始异常的信息保存下来,这被称为异常链。略。

qq_43783527的博客 2136

java各种异常总结

java各种异常总结

linsa_pursuer的博客 3931
上一篇: rowid 和 rownum 的区别
下一篇: java 数组 和 异常下
HENGPERSYSENT
博客等级 码龄15年 2粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值