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

自已定义一个Java异常——子定义异常,和异常遇到的面试题。

自定义异常

当Java官方提供的异常不满足我们实际业务需求时候,可以选择自己定义异常

自定义异常的步骤:

1》编写一个异常类,

2》自定义检查异常需要继承Exception

自定义运行时异常需要继承RuntimeException

3>再异常类中去调用父类中带参的构造方法,

传入异常信息字符串

4》在方法里面需要使用自定义异常时,需要先创建异常对象,然后再通过throw关键字将异常对象进行抛出

import java.util.Scanner;

/*
 * 自定义异常
 */

class UsernameLengthWrongException extends Exception{

	public UsernameLengthWrongException() {
		super("你的用户名太长或太短,应该在4到8个字符之间");
		
	}

}

class  WrongSexInputException extends RuntimeException {

	public WrongSexInputException() {
		super("请输入性别,男/女");
	}
	
	
}
public class TestException03 {
public static void main(String[] args) throws UsernameLengthWrongException {
	m1();
}
		/*
		 * 提示用户从控制台输入姓名
		 * 当用户输入的姓名少于四个字符或者超过八个字符
		 * 抛出自定义检查异常
		 */
		public static void m1() throws UsernameLengthWrongException {
			System.out.println("请输入你的用户名");
			String username= new Scanner(System.in).nextLine();
			if(username.length()<4||username.length()>8) {
				//创建自定义检查异常
				UsernameLengthWrongException ex=
						new UsernameLengthWrongException();
				//手动抛出检查异常,整个函数都到此结束了
				//相当于这一行代码发生了一个检查异常
				throw ex;
				//后面不能再写其他代码了
				//System.out.println("oiuhgvdekfoiuh");
			}
			System.out.println("1234567890");
		}


		/**
		 * 提示用户从控制台输入性别
		 * 如果性别不是男和女
		 * 就抛出一个自定义的运行时异常
		 */
		public static void m2() {
			System.out.println("请输入性别");
			String sex= new Scanner(System.in).nextLine();
			if(!(sex.equals("男")||sex.equals("女"))) {
				//创建一个自定义的运行时异常
				WrongSexInputException e=new WrongSexInputException();
				//抛出异常,整个函数结束
				throw e;
			}
			System.out.println("恭喜你,你性别正常");
		}
}

异常相关面试题

1.finally、final、fianlize三个之间有什么区别?

final可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、

修饰变量表示该变量是一个常量不能被重新赋值。

finally一般作用在try-catch代码块中,在处理异常的时候,通常我们将一定要执行的代码方法

finally代码块中,表示不管是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代码。

finalize是一个方法,属于Object类的一个方法,而Object类是所有类的父类,Java 中允许使用

finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。

2,try或catch中有return,finally中代码还会不会执行?

会执行,在 return 前执行。

注意:在 finally 中改变返回值的做法是不好的,因为如果存在 finally 代码块,try中的 return 语

句不会立马返回调用者,而是记录下返回值待 finally 代码块执行完毕之后再向调用者返回其值,

然后如果在 finally 中修改了返回值,就会返回修改后的值。

3,throw和throws有什么区别?

throw 关键字用在方法内部,只能用于抛出一种异常,用来抛出方法或代码块中的异常,受查异常

和非受查异常都可以被抛出。

throws 关键字用在方法声明上,可以抛出多个异常,用来标识该方法可能抛出的异常列表。一个

方法用 throws 标识了可能抛出的异常列表,调用该方法的方法中必须包含可处理异常的代码,否

则也要在方法签名中用 throws 关键字声明相应的异常。

4.说出你项目中常见的五个运行时异常

略(自己了解多少写多少,根据自身要求来看)

相关文章:

  • 计算机视觉+人工智能面试笔试总结——目标检测/图像处理基础题
  • 【html】面试问题总结
  • Python:for循环语句
  • 第9章Linux实操篇-组管理和权限管理
  • java计算机毕业设计基于安卓Android/微信小程序的产后康复APP
  • 计算机毕业设计ssm图书馆管理系统z3z90系统+程序+源码+lw+远程部署
  • java Python+Django的个人博客系统
  • 计算机毕业设计ssm图书馆自习室占座选座zg09h系统+程序+源码+lw+远程部署
  • 第10章Linux实操篇-定时任务调度
  • 06-linux下的软件包管理 RPM YUM
  • java Python+Django的工厂设备管理系统 Pycharm
  • java 基于springboot+vue的居民社区健康管理平台
  • 计算机组成原理学习笔记:计算机的发展历程
  • java毕业设计小区停车场管理系统mybatis+源码+调试部署+系统+数据库+lw
  • java基于springboot+vue的旅游博客旅游经验分享系统
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • Android交互
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • Java,console输出实时的转向GUI textbox
  • javascript从右向左截取指定位数字符的3种方法
  • Linux后台研发超实用命令总结
  • 分布式事物理论与实践
  • 前端面试之CSS3新特性
  • 时间复杂度与空间复杂度分析
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • 阿里云重庆大学大数据训练营落地分享
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • # 达梦数据库知识点
  • (20050108)又读《平凡的世界》
  • (6)STL算法之转换
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (五)IO流之ByteArrayInput/OutputStream
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)编辑寄语:因为爱心,所以美丽
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .net core Swagger 过滤部分Api
  • .NET Core 成都线下面基会拉开序幕
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .net 发送邮件
  • .NET 命令行参数包含应用程序路径吗?
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .Net6 Api Swagger配置
  • .NET6实现破解Modbus poll点表配置文件
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • /boot 内存空间不够
  • /etc/fstab和/etc/mtab的区别
  • @JoinTable会自动删除关联表的数据
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [Android Pro] Notification的使用
  • [AndroidStudio]_[初级]_[修改虚拟设备镜像文件的存放位置]
  • [Avalon] Avalon中的Conditional Formatting.