java异常4 手动抛出异常与自定义异常类

Java异常处理--throw手动抛出异常对象 阅读详情

/*

  • 手动抛出异常:throw(注意throws是处理异常,throw是抛出异常)
  • 1,Java异常类对象除在程序执行过程中出现异常时由系统自动生成并抛出,也可根据需要使用人工创建并抛出。
  • 2首先要生成异常类对象,然后通过throw语句实现抛出操作(提交给Java运行环境)。
  • 可以抛出的异常必须是Throwable或其子类的实例。否则将会产生语法错误:
  • 通常使用RuntimeException,其次使用Exception,其他情况较少。
  • 自定义异常类:
  • 1,通常,用户自定义异常类都是RuntimeException的子类。
  • 2,自定义异常类通常需要编写几个重载的构造器。
  • 3,自定义异常需要提供serialVersionUID
  • 4,自定义的异常通过throw抛出。
  • 5,自定义异常最重要的是异常类的名字,当异常出现时,可以根据名字判断异常类型。

*/

如果输入类型错误,代码会出现循环无法退出的情况,参考

linkhttps://bbs.youkuaiyun.com/topics/370262930 17楼的解释

如果把Scanner scan = new Scanner(System.in);语句移动到for循环结构内或者try结构内则此bug消失,或者在catch结构中加入sacn.next();语句,读取下一次输入的数据。

package exception;

import java.util.InputMismatchException;
import java.util.Scanner;

public class Exception_Throw {
  public static void main(String[] args) {
	  Scanner scan = new Scanner(System.in);
	  Worker w = new Worker();
	for(;;) {  //通过for循环,持续输入数据,直到数据合法不抛出异常,则会break跳出循环
	try {
	    System.out.println("请输入工资");
		int num = scan.nextInt();
		w.getPay(num);//出现异常会跳转到catch中,break不会执行。
		System.out.println(w);
		break;//不出异常,执行到break,跳出循环,取得正常数据
	 } catch (InputMismatchException e) {
		System.out.println(e.getMessage());
		System.out.println("请重新输入");
	 } catch (RuntimeException e) {
		System.out.println(e.getMessage());//getMessage()方法返回的String数据就是手动创建异常对象时,输入的语句
		System.out.println("请重新输入");
	}
	}
	
	for(;;) { 
		try {
			System.out.println("请输入今天的得分");
			int num = scan.nextInt();
			w.setScore(num);
			System.out.println("今天的得分是" + w.score);
			break;
		 } catch (InputMismatchException e) {
			System.out.println(e.getMessage());
			System.out.println("请重新输入");
		 }
		 catch (NumberOutOfBoundsException e) {
			System.out.println(e.getMessage());
			System.out.println("请重新输入");
		 }
	}
	
	for (; ;) {
		//练习,两个数字相除的异常处理
		try {
			System.out.println("请输入分子");
			int a = scan.nextInt();
			System.out.println("请输入分母");
			int b = scan.nextInt();
			int c = ecm(a, b);
			System.out.println(a + "除以" + b + "等于" + c);
			break;
		} catch (InputMismatchException e) {
			System.out.println("数据类型错误,请重新输入");
		} catch (NegativeNumberException e) {
			System.out.println(e.getMessage());
			System.out.println("请重新输入");
		} catch (ArithmeticException e) {
			System.out.println("分母不能为0 ,请重新输入");
		} 
	}
		
		System.out.println("-----------");
}
  
  public static int ecm(int i,int j) throws NegativeNumberException {//因为NegativeNumberException继承Exception,不是RuntimeException的子类,必须处理
	  if(i < 0 || j < 0) {
		 throw new NegativeNumberException("输入数据不能为负数") ;
	  }
	  return i / j;
  }
  
}

class Worker{
	int score;
	int salary;
	static int minSalary = 2000;
	
	void getPay(int i){//这里的throws是处理异常
		if(i >= minSalary) {
		salary = i;
		}else {
			//System.out.println("数据非法");//如果不加throw依然会被赋值
			//throw new String("数据非法");//抛出的异常必须是Throwable或其子类的实例
			throw new RuntimeException("低于法定最低工资,数据非法");//这里的throw是抛出异常
		}
	}
	@Override
	public String toString() {
		return "Worker [salary=" + salary + "]";
	}
	
	void setScore(int i){
		if(i >= 0 && i <= 100) {
		score = i;
		}else {
			throw new NumberOutOfBoundsException("数据范围必须在0-100之间");
		}
	}
		
}

class NumberOutOfBoundsException extends RuntimeException{
	static final long serialVersionUID = 13265653435L;
	
	public NumberOutOfBoundsException(){
		super();
	}
	
	public NumberOutOfBoundsException(String message) {
		super(message);
	}
	
}

class NegativeNumberException extends Exception{
	static final long serialVersionUID = 1365653435L;
	
	public NegativeNumberException(){
		super();
	}
	
	public NegativeNumberException(String message) {
		super(message);
	}
	
}
基于加速科技ST2500的SN74HC00N芯片测试计划 实际上随着工艺的进步,器件内部和引脚间的绝缘氧化膜越来越薄,导致漏电流发生的概率更大,另外制造过程中的工艺缺陷导致的桥接,异物或封装过程中造成的芯片划伤、引裂,都会造成IC的漏电流偏大,有部分产品可能会表现出漏电流偏大,但功能正常,此类产品具有潜在的可靠性问题,漏电流测试的目的就是把具有此类缺陷的产品筛选出来,避免其流到最终产品造成更大的损失。漏电流的测试方法相对简单,就是根据产品手册或测试规范对被测引脚施加额定的电压,然后测量其输入或流出的电流是否符合相应的设计规范。74HC00引脚功能如表所示。 阅读详情

相关推荐

python提取图片中的文字写入excel文件,并打包为exe可执行文件

python提取图片中的文字写入excel文件,并打包为exe可执行文件

liqiang12689的博客 989

java 手动抛异常_Java 异常处理 之 手动抛出异常

一、手动抛出异常 throw在编写程序时,我们必须要考虑程序出现问题的情况。比如,在定义方法时,方法需要接受参数。那么,当调用方法使用接受到的参数时,首先需要先对参数数据进行合法的判断,数据若不合法,就应该告诉调用者,传递合法的数据进来。这时需要使用抛出异常的方式来告诉调用者 。Java 异常类对象除在程序执行过程中出现异常时由系统自动生成并抛出,也可以根据需要使用人工创建并抛出。在java中,提...

weixin_39719989的博客 1万+

单片机如何获得5V电源

在单片机实际设计中,有时会需要在电路中用到5V电压源,那么这个常见的实验需求有哪些办法解决呢,我综合网上的资料,概括一下: 1)USB    这种方法在我们直接将单片机板与电脑连接调试的时候,算是简单又方便的办法了,但如果我所要得到的成品不直接连接外部的器件,这就得舍弃。     常用的,USB/5V插头线,这是一种专门的电源线,一端是USB通用接口,可以直插USB端口,另一端是内正外负电压

Echo_Ana的博客 3万+

第4关:自定义异常

第4关:自定义异常 编程要求 请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下: 定义一个自定义异常,判断用户名是否小于三位,如果用户名小于三位,就抛出一个自定义异常。 测试说明 补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。 输入: admin 输出: 用户名格式正确 输入: ab 输出: Exception in thread “main” step4.MyException: 用户名小于三位Exception

陈陈不like的博客 7954

基于STM32F407的定时器以及定时器中断的实现

基于STM32F407的定时器以及定时器中断的实现

weixin_57941207的博客 5228

RedCap:一种通信技术的概述

总结起来,RedCap是一种基于数据包交换的通信技术,它提供了一种高效、可靠的数据传输机制。通过使用RedCap,我们可以轻松地发送和接收数据包,并确保数据的完整性和正确性。在上面的示例中,我们首先导入了RedCap库,并创建了一个RedCap实例。然后,我们定义了目标地址和源地址,并创建了一个数据包,其中包含了目标地址、源地址和要发送的数据。本文将介绍RedCap的基本原理和使用方法,并提供一些相关的源代码示例。RedCap还提供了其他一些功能,如数据包的重传机制、流量控制和拥塞控制等。

YgjWeb的博客 899

第六讲 Java面向对象-Java中的异常 (头歌答案)

第六讲 内部类 异常处理 第1关:Java 中的异常处理机制 第2关:捕获异常 源码 第3关:抛出异常 源码: 第4关:自定义异常 源码

Molly 的博客 1万+

看完这篇你就能讲解LLC软开关:一文秒懂 ZVS 和 ZCS 到底啥意思!

想要 MOS 管ZVS 好实现➜ 把工作频率保持在 fr1 或更高。想让整流二极管也ZCS 实现➜ 频率就别高过 fr1。设计磁性元件时,一定要计算好 Lr、Lm、Cr 的值,这直接决定你 fr、fr1 是多少!LLC 的软开关技术不是“魔法”,是电感电容+频率控制的精妙组合;fr1 就像黄金分割点,整流和开关都能“刚刚好”;不是所有软开关都能同时实现,要看你在频率曲线的哪一段!

weixin_43199439的博客 1529

如何自定义异常Java

情况确实如此,无论是在Java自带异常还是,用户自定义异常,他们都是去掉用父类有参或者无参构造方法,异常这种一层一层的去调用父类构造方法,是异常发生的基本流程,最终干实事的是最终类Throwable,所以上述的我的自定义的异常是符合异常的基本规范的,最后的是如何去使用自定义的编译时异常去规范我们的程序呢,下面是我对异常的使用,如图。这样看是不是舒服多了,自定义编译时异常的功能用处广泛,应用的方向广泛,也体现Java高度面向对象的包容性。下面是他的具体用法,如图。下面是控制台输出,如图。

weixin_74077856的博客 3876

Codesys入门-新建工程+任务调用+编译+调试

程序组织单元(Program Organization Unit, POU)由声明区和代码区组成,是用户程序的最小软件单元,它相当于传统编程系统中的块(Block),按功能程序组织单元(POU)可分为函数(FUN)、功能块(FB)、程序(PRG)。:Codesys采用多任务的方式来执行用户程序的“任务”,而每个“任务”分配了不同的执行周期,有些全局变量可能要在不同的POU之间被访问和修改,于是需要对全局变量进行交互同步,也是在任务的“时间对准点”进行的,实例:声明了INT类型,变量名为输入;

刺客 1万+

YOLOv11的对比学习预训练改进-(通过SimCLR预训练增强特征提取)

本文介绍了将SimCLR对比学习预训练与YOLOv11目标检测模型相结合的创新方法。文章首先概述了目标检测领域的发展现状和YOLOv11的架构优化,包括主干网络、特征金字塔和检测头的改进设计。其次详细解析了SimCLR对比学习的核心原理,涵盖数据增强、投影头设计和NT-Xent损失函数。最后探讨了如何将对比学习与目标检测有效结合,通过特征空间对齐和渐进式微调策略提升模型性能。该方法显著增强了特征提取能力,提高了检测精度和训练效率,特别是在小目标和遮挡目标的检测上表现突出。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 685

Java异常详解及自定义异常

异常的定义 异常就是有异于常态,和正常情况不一样,有错误出现。在java中,阻止当前方法或作用域的情况,称之为异常。 异常的分类 Error:是程序中无法处理的错误,表示运行应用程序中出现了严重的错误。此类错误一般表示代码运行时JVM出现问题。通常有Virtual MachineError(虚拟机运行错误)、NoClassDefFoundError(类定义错误)等。比如说当jvm耗完可用内存时,将出现OutOfMemoryError。此类错误发生时,JVM将终止线程。非代码性错误。因此..

Java后端技术栈 2万+

Qt/C++ 音视频开发 - FFmpeg 安卓版

通过将 FFmpeg 集成到 Qt/C++ 项目中,我们可以实现强大且灵活的音视频处理功能。本文介绍了在安卓平台上使用 FFmpeg 的基本步骤,包括初始化、解码、处理和编码等。实际应用代码示例展示了如何在安卓设备上播放视频。

走向CTO的路上... 1190

Java 使用 throw 抛出异常

程序出现错误后,系统会自动抛出异常;此外,Java 也允许程序自行抛出异常,自行抛出异常使用 throw 语句来完成。 本文包含: 抛出异常 自定义异常类 catch 和 throw 同时使用 Java 7 增强的throw 语句 异常链 1. 抛出异常 如果需要在程序中自行抛出异常,则应使用 throw 语句,throw 语句可以单独使用,throw 语句抛出的不是异常类,而是一个异常实例,...

黑白灰的博客 8万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

visio安装包

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

走进异常类的世界,自定义业务异常类实现指南

一:异常概念与体系结构异常的概念:异常是指在程序运行过程中,由于某些错误或意外情况导致程序无法正常继续执行的现象。这些错误或意外情况可能包括但不限于:无效的输入、资源不可用、违反安全约束等。在Java等编程语言中,异常被当作对象来处理,允许程序在异常发生时采取适当的措施,如记录错误信息、释放资源、提示用户等,从而增强程序的健壮性和可靠性。NullPointerException:当应用程序试图在需要对象的地方使用 null 时抛出。

2301_80350265学无止尽5的博客 2440

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Java 自定义异常类 总体过程

如果要求抛出该异常时必须要在代码中处理(必须有对应try---catch---),异常类应该继承Exception如果要求抛出该异常时不必须在代码中处理,异常类应该继承(不必须处理不代表不能处理)自定义异常类的继承格式class 类名 extends Exception/RuntimEexception{public 类名 (string message){//该类的构造函数super(message)//调用throwable构造函数,给本异常添加提示信息message。

m0_73955858的博客 1724

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java中的异常总结详解(异常类型、声明异常、抛出异常、捕获异常)

Java 异常解析前言 前言

YING—country的博客 3万+

Java异常之自定义异常类详解和代码举例

Java语言的异常 异常处理机制 Java中的异常概念 1. 异常是程序在运行过程中由于算法问或软件设计等问题导致的程序异常事件。 2. 异常的前提是可以识别并被捕获的。 3. Java以面向对象的方法来处理异常的;Java提供了各种类型的异常类。 4. Java允许自定义异常类。 Java异常的产生过程 1. 程序运行若发生异常,就会触发能被监听器捕获的异常事件,该事件的处理程 序会生成一个对应的 异常对象并交给JVM,由 JVM查找相应的代码处理该异 常。 2. 生成异常对象并将其交给JVM的过程称为

xjszsd的博客 4929

Java自定义异常类

1.异常是程序在运行中由于算法问或软件设计等问题导致的程序异常事件。2.异常的前提是可以识别并被捕获的。3.Java以面向对象的方法来处理异常的;Java提供了各种类型的异常类。1.程序运行若发生异常,就会触发能被监听捕获的异常事件,该事件的处理程序会生成一个异常对象并交给JVM,有JVM查找相应的代码处理该异常。2.生成异常对象并将其交给JVM的过程称为捕获异常。3.异常本身作为一个对象,即产生一个异常就是产生一个异常对象;异常对象可能由应用程序本身产 生,也可能由JVM产生,这取决于异常的种类。1.每个

m0_58307569的博客 9008

Java 如何抛出异常、自定义异常

一、异常的抛出 1、定义 : 一个方法不处理这个异常,而是调用层次向上传递,谁调用这个方法,这个异常就由谁来处理。2、throw : 将产生的异常抛出(强调的是动作),抛出的既可以是异常的引用,也可以是异常对象。(位置: 方法体内)3、throws : 如果一个方法可能会出现异常,但没有能力处理这种异常,可以在方法声明处用throws子句来声明抛出异常。用它修饰的方法向调用者表明该方法可能会抛出异

风中的劲草 33万+

java手动抛出异常、用户自定义异常类、异常处理5个关键字、throw和throws的区别

用户自己的异常类必须继承现有的异常类(RuntimeException、Exception)。一般地,用户自定义异常类都是的子类。自定义异常类通常需要编写几个重载的构造器。自定义异常需要提供serialVersionUID自定义的异常通过throw抛出。自定义异常最重要的是异常类的名字,当异常出现时,可以根据名字判断异常类型。}}测试代码try{}else{thrownewNegativeException("您输入的数据非法!");}}......

Redamancy06的博客 1414

Java异常类的总结

黑马程序员Java课堂笔记

m0_58866615的博客 2086

Java 如何抛出异常、自定义异常、手动或主动抛出异常

public static void main(String[] args) { try { throw new Exception("抛出异常"); } catch (Exception e) { e.printStackTrace(); System.out.println("捕获异常"); } } ...

weixin_30396699的博客 1460

Throwable -抛出异常类与自定义异常类

/* 自定义异常类 java提供的异常类,不够我们使用,需要自己定义一些异常类 格式: public class XXXException extends Exception/runtimeException{ 添加一个空参数的构造方法 添加一个带异常信息的构造方法 ...

ata69104的博客 1246

java为什么要抛出异常_java抛出异常是怎么回事?

一、Java异常的基础知识异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出java.lang.ArithmeticException的异常。有些异常需要做处理,有些则不需要捕获处理,后面...

weixin_29197051的博客 6777

JAVA异常类异常抛出处理

Java异常类分析,try...catch/throw/throws/自定义异常类

勾栏听曲_0的博客 3240
上一篇: java异常3异常处理之throws结构
下一篇: java练习项目三 团队成员调度程序
wisdomcodeinside
博客等级 码龄7年 29粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值