java之异常处理try-catch的死循环问题

从“氛围编程“到“智能体工程“:AI编程范式的认知跃迁与工程实践 摘要: 2026年,ClaudeCode负责人鲍里斯·切尔尼提出用“智能体工程”(Agent Engineering)替代流行的“氛围编程”(Vibe Coding),认为后者过于主观,无法体现AI编程的系统化与工程化本质。智能体工程强调记忆系统、工具编排、任务分解、可观测性等核心技术,将AI编程从“玄学辅助”升级为可度量、可规模化的工程学科。本文通过对比术语差异、构建知识体系,并结合代码实例(如带记忆系统的代码生成Agent和可观测性系统),展示了智能体工程的实际应用。行业案例(如ClaudeCode的并 阅读详情

try-catch问题

在异常问题中,需要用到try-catch来获取异常,并对他进行处理。
但是把try-catch放到循环里,容易出现死循环。例题如下:

题目:使用异常机制处理异常输入
 1. 输入n,创建大小为n的int数组。
 2. 输入n个整数,放入数组。输入时,有可能输入的是非整型字符串,这时候需要输出异常信息,然后重新输入。
 3. 使用Arrays.toString输出数组中的内容。
 输入样式:
 5
 1
 2
 a
 b
 4
 5
 3
 输出样式
 java.lang.NumberFormatException: For input string: "a"
 java.lang.NumberFormatException: For input string: "b"
 [1, 2, 4, 5, 3]
// 代码如下
package com.zjr1;

import java.util.Arrays;
import java.util.Scanner;

public class dome3 {
	public static void main(String args[]){
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		int[] a = new int[n];
		for(int i = 0;i<n;i++){
			try{
				a[i] = in.nextInt();
			}
			catch(Exception e){
				System.out.println("java.lang.NumberFormatException: For input string");
				i--;
			}
		}
		System.out.println(Arrays.toString(a));
		in.close();
	}
}

但是,你会发现输出是死循环,会一直执行catch中的输出语句
所以当输入异常后,catch到exception,开始下一次循环,但这时数据缓冲区内你上次输入的异常还在,并没有清除,这时继续解析异常,就又catch到exception,还是错误,于是这个过程就一直重复下去了。

解决方法(2种):

  1. 在catch()语句 中加上in.next();
  2. 将in的定义写在try语句内。
正确的程序:
package lalala;

import java.util.Arrays;
import java.util.Scanner;

public class exception {
	public static void main(String args[]){
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		int[] a = new int[n];
		String str = "";
		for(int i = 0;i<n;i++){
			String s = in.next();
			try{
				int t = Integer.parseInt(s);
				a[i] = t;
			}
			catch(Exception e){
				str = str + s;
				i--;
			}
		}
		for(int i=0;i<str.length();i++){
			System.out.println("java.lang.NumberFormatException: For input string: \""+ str.charAt(i) +"\"");
		}
		System.out.println(Arrays.toString(a));
		in.close();
	}
}

运行结果如下:
在这里插入图片描述

PWM调节DCDC参数计算原理 SOC芯片的核电压、GPU电压、NPU电压、GPU电压等,都会根据性能和实际应用场景来进行电压和频率的调整。 即动态电压频率调整DVFS(Dynamic Voltage and Frequency scaling),优化性能和功耗。 阅读详情

相关推荐

【49】Camunda8-Self-Managed部署之Docker方式

围绕camunda8 self-managed,介绍了基于Docker部署相关服务的过程。

AlieNeny的博客 1682

jmu-Java-06异常-02-使用异常机制处理异常输入

使用异常处理输入机制,让程序变得更健壮。 main方法: 输入n,创建大小为n的int数组。 输入n个整数,放入数组。输入时,有可能输入的是非整型字符串,这时候需要输出异常信息,然后重新输入。 使用Arrays.toString输出数组中的内容。 输入样例: 5 1 2 a b 4 5 3 输出样例: java.lang.NumberFormatException: For input string: "a" java.lang.NumberFormatException: For input str

黑白的黒's Blog 4091

STM32L431电池供电项目实战:用STOP2模式把功耗降到5uA以下(CubeMX配置详解)

本文详细介绍了如何在STM32L431电池供电项目中利用STOP2模式实现5μA以下的超低功耗设计。通过CubeMX配置、硬件优化和软件策略,成功将农业温湿度监测节点的待机功耗控制在4.7μA,确保CR2032电池供电下3年以上的工作寿命。文章包含完整的低功耗实现路径和实测数据,特别适合物联网边缘设备开发者参考。

weixin_30345577的博客 393

java成长日记(11)

7-4 jmu-Java-06异常-02-使用异常机制处理异常输入分数 5。

qq_74321854的博客 314

kali设置安装burpsuite中文版

工具:通过网盘分享的文件:Burpsuite 链接:提取码: jay1。

m0_74786138的博客 5202

【AI绘图进阶指南】Latent Diffusion Model核心组件解析——从理论到实践

本文深入解析Latent Diffusion Model(LDM)的核心组件,包括Autoencoder、Denoiser和Conditioning Encoder的工作原理及实践应用。通过理论结合代码示例,揭示LDM如何高效处理图像生成任务,并优化AI绘图流程,为开发者提供从理论到实践的进阶指南。

weixin_42628941的博客 385

try-catch死循环的问题

写try-catch的时候遇到:输入的数据类型错误时,一直死循环报错。 以下是论坛大神的解答,我稍微做了些整理和转载: 一、两种解决思路 当输入异常后,catch到exception,开始下一次循环,但这时数据缓冲区内你上次输入的异常还在,并没有清除,这时继续解析异常,就又catch到exception,还是错误,于是这个过程就一直重复下去了。 修改思路:catch到的except

qq_36184009的博客 4124

在Open3D中从网格中采样点云

在本文中,我们将学习如何使用Open3D从网格中采样点云。点云采样是点云处理的重要步骤之一,能够为后续的任务提供必要的输入。通过这些示例代码,我们可以很容易地使用Open3D库从网格模型中采样点云。值得注意的是,根据实际应用需求,我们可以调整采样点的数量和采样方法来满足不同的场景需求。除了使用Poisson Disk算法,Open3D还提供了其他的点云采样方法,如Uniform采样和Random采样。这个函数使用了Poisson Disk采样算法,可以在保持点云均匀性的同时,尽可能避免重叠点的生成。

FxRuby的博客 413

java中死循环出现异常报错_Java多线程编程7--线程中的异常处理

一、几个基本概念的区分 1.进程与程序的区分 程序 进程 包含代码部分、数据部分 包含代码部分、数据部分、进程控制块 顺序执行 并发执行 独占资源 共享资源 同步的 异步的 静态的 动态的 (本质区别) 2.线程与进程的关系 相同:线程是轻量级的进程,一个进程1、线程中的异常处理 先看看一个简单的线程异常情况 //有异常的线程public class MyThread extends Thread...

weixin_39777213的博客 885

YOLOv8改进 | 主干篇 | 轻量级的低照度图像增强网络IAT改进YOLOv8暗光检测(全网独家首发)

本文给大家带来的改进机制是轻量级的变换器模型:Illumination Adaptive Transformer (IAT),用于图像增强和曝光校正。其基本原理是通过分解图像信号处理器(ISP)管道到局部和全局图像组件,从而恢复在低光或过/欠曝光条件下的正常光照sRGB图像。具体来说,IAT使用注意力查询来表示和调整ISP相关参数,例如颜色校正、伽马校正。模型具有约90k参数和约0.004s的处理速度,能够在低光增强和曝光校正的基准数据集上持续实现优于最新技术(State-of-The-Art, SOTA)

Snu77的博客 7959

YOLO系列算法改进 | C3k2改进篇 | 融合DFRL双融合注意力接收层 | 轻量化与全局感受野双突破,适应高分辨率航拍与密集小目标检测场景 | CVPR 2026

YOLO系列算法改进 | C3k2改进篇 | 融合DFRL双融合注意力接收层 | 轻量化与全局感受野双突破,适应高分辨率航拍与密集小目标检测场景 | CVPR 2026 (以YOLO26最新目标检测模型为基础,利用C3k2_DFRL创新模块进行改进)

2502_91881744的博客 232

java swing 关闭时终止所有线程_Java终止线程的三种方式

停止一个线程通常意味着在线程处理任务完成之前停掉正在做的操作,也就是放弃当前的操作。在 Java 中有以下 3 种方法可以终止正在运行的线程:使用退出标志,使线程正常退出,也就是当 run() 方法完成后线程中止。使用 stop() 方法强行终止线程,但是不推荐使用这个方法,该方法已被弃用。使用 interrupt 方法中断线程。1. 使用标志位终止线程在 run() 方法执行完毕后,该线程就终止...

weixin_29346059的博客 996

【电机应用控制】——步进电机控制原理(四相五线/两相四线/细分驱动)&驱动器&梯形/S形加减速算法&直线/圆弧插补

步进电机是一种把电脉冲信号转换为角位移(左)或线位移(右)的电动机。两相通常1.8°,三相通常1.2°、无相通常0.72°,角位移=脉冲个数X步距角。在非超载且不超频的情况下,电机的旋转位置只取决于脉冲个数,转速只取决脉冲信号的频率。所以只需要统计脉冲个数和频率,不再需要编码器测速和位置,具有优秀的开环能力,当然也可接编码器反馈速度和位置数据,实现更加精准的闭环控制。永磁式动态性能好,输出力矩大,但步距角大通常7.5°;反应式(磁阻式)结构简单成本低,步距角小一般1.2°,但振动噪音大动态性能差;

weixin_51658186的博客 5万+

有关 Java 的 try-catch-finally 语句的特殊情况备忘

参考文章:深入理解java异常处理机制 假设前提背景有: int i = 0; String greetings[] = { " Hello world !", " Hello World !! ", " HELLO WORLD !!!" }; 1、因 try-catch 造成的死循环 (1) while (i < 4) { try { System.out.pr...

一个有思想的搬运工 381

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

数学建模模型总结

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

Java中关于try catch finally中的问题总结

关于try catch finally中的几个问题基本上都是为了应对面试的,当然有些也是为了加身认识。 一、try catch finally中finally中代码不执行的情况 1.try catch 中存在死循环[while(true)死循环],而且代码中不会抛出异常; 正常的代码:类似的例子如Android主线程中Handler的Looper循环线程一样; 程序中...

black_bird_cn的博客 2987

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java里try catch之catch对捕获异常的处理及后续代码的执行的探索

trycatch之catch对捕获异常的处理及后续代码的执行的探索 工作时,一直对try块中throw的异常对象,在catch中如何处理此异常,以及trycatchfinally完毕,程序是否就此停止还是继续运行很迷惑,于是参考网上的资料,自己写了些demo,去慢慢探索。 例1. public static void main(String[] args) { int i = 7; int j = 0; try { if (j == 0

五宝茶四娃的博客 9176

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Java:使用try/catch捕捉InputMismatchException造成死循环

问题描述 Java使用在编写获取用户正确输入的逻辑代码时,采用循环读取来正确获取,其中使用try/catch语句捕捉InputMismatchException,当用户出现错误输入时,程序进入死循环,不再阻塞等待用户输入。 相关代码如下 Scanner ipt = new Scanner(System.in); boolean input_Right = false; do{ try{ ...

东君不爱惜 2128

java try catch陷阱_Java异常处理最佳实践及陷阱防范

出自《深夜里的程序猿》作者:wangzenghuang前言不管在我们的工作还是生活中,总会出现各种“错误”,各种突发的“异常”。无论我们做了多少准备,多少测试,这些异常总会在某个时间点出现,如果处理不当或是不及时,往往还会导致其他新的问题出现。所以我们要时刻注意这些陷阱以及需要一套“最佳实践”来建立起一个完善的异常处理机制。正文异常分类首先,这里我画了一个异常分类的结构图。在JDK中,Throwa...

weixin_33921444的博客 280

Java 为什么要 try catch?

一、描述 一个学在Java的室友问我,明明都知道错误为什么还要try catch 处理异常啊?以下文章是我对其的一点思考。 二、为什么要try catch? 明白Java 中的 try catch是什么? 首先,try catch是Java中处理 异常 的手段机制。关于Java如何具体来处理异常,后面来解释;我们先来明确目标和背景。既然是用来处理异常的,那么异常是什么?而这样做的好处又是什么呢? 异常指的是在程序运行过程中发生的异常事件,通常是由外部问题(如硬件错误、输入错误) 所导致的。在Java

qq_44654974的博客 3296

C++ 及 Windows 的异常处理(try catch; __try __except; __try __finally)

C++ 异常处理:try,catch try { // 可能出错的语句, 如果有错,就 throw ... // 初始化一个异常对象(exception object) } catch( 类型名 [形参名] ) // 异常说明符(exception specifier) { // do 异常处理 } catch( 类型名 [形参名] ) { // do 异常

蜡笔小辛的专栏 2425

hasNextInt()陷入死循环的问题

本意是: 键盘输入,输入非数字的值,会出现报错(Exception in thread “main” java.util.InputMismatchException),无法运行,想使用while循环和hasNextInt,进行判断,判断键盘输入的值是否为数字,如果true,则将键盘输入的值进行保存,如果false,则循环再次键盘输入值,直到输入的值为数字 解决报错问题 1.利用try-catch...

qq_38971164的博客 1722

Java异常--try catch finally,throw ,throws

public class Demo1 { private Demo1 demo1; public Demo1() { //会出现栈溢出错误,死循环 demo1 = new Demo1(); } } 异常的执行情况,及异常跟踪演示。 当异常没有try{} catch(){},会报异常并终止程序运行,当用try{} catch(){}时,会报异常程序继续执行。 public class Demo2 { public static void main(String[].

Mr_muu的博客 216

java循环卡住_java 异常死循环 问题

java 异常死循环 问题代码如下:public class TestException{public static void main (String args[]) {int i = 0;String greetings [] = {" Hello world !"," Hello World !! "," HELLO WORLD !!!"};while (i < 4) {try {//...

weixin_35834213的博客 831

try...catch执行了catch后不知道怎么重新执行业务?看这个~

出现的场景。 try…catch…是我们常用的用于处理运行错误的方法,比如IO流错误IOException,比如URL的异常ConnectException。那么在实际业务中(比如远程请求资源,却因为网络波动致使这次请求失败,从而走了catch),如果遇上了执行了catch后,依然希望重新执行try,需要如何做显然是头等大事。 如何来写。 先看一下我们常写的 try{ //执行的代码 }catch(ConnectException ce){ ce.printStackTrace(); }finally{

喜欢玩游戏的大尾巴狼的博客 2154
上一篇: 二位数组中的查找
下一篇: 选择排序的js实现
apple_2021
博客等级 码龄8年 1529粉丝 43原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值