首页 > 其他分享 >知识点

知识点

时间:2024-03-04 22:36:36浏览次数:31  
标签:知识点 String 自定义 抛出 异常 public RegisterException

throws异常和throw的区别
共同点
两者在抛出异常时,抛出异常的方法并不负责处理,顾名思义,只管抛出,由调用者负责处理。
区别
(1)throws用于方法头,表示的只是异常的申明,而throw用于方法内部,抛出的是异常对象。
(2)throws可以一次性抛出多个异常,而throw只能一个
(3)throws抛出异常时,它的上级(调用者)也要申明抛出异常或者捕获,不然编译报错。而throw的话,可以不申明或不捕获(这是非常不负责任的方式)但编译器不会报错。


自定义异常
为什么需要自定义异常类:

我们说了Java中不同的异常类,分别表示着某一种具体的异常情况,那么在开发中总是有些异常情况是SUN没有定义好的,此时我们根据自己业务的异常情况来定义异常类。例如年龄负数问题,考试成绩负数问题等等。

在上述代码中,发现这些异常都是JDK内部定义好的,但是实际开发中也会出现很多异常,这些异常很可能在JDK中没有定义过,例如年龄负数问题,考试成绩负数问题.那么能不能自己定义异常呢?

什么是自定义异常类:

在开发中根据自己业务的异常情况来定义异常类.

自定义一个业务逻辑异常: RegisterException。一个注册异常类。

异常类如何定义:

自定义一个编译期异常: 自定义类 并继承于java.lang.Exception。
自定义一个运行时期的异常类:自定义类 并继承于java.lang.RuntimeException。
自定义异常举例
要求:我们模拟注册操作,如果用户名已存在,则抛出异常并提示:亲,该用户名已经被注册。

首先定义一个登陆异常类RegisterException:

// 业务逻辑异常
public class RegisterException extends Exception {
/**
* 空参构造
*/
public RegisterException() {
}

/**
*
* @param message 表示异常提示
*/
public RegisterException(String message) {
super(message);
}
}

模拟登陆操作,使用数组模拟数据库中存储的数据,并提供当前注册账号是否存在方法用于判断。

public class Demo {
// 模拟数据库中已存在账号
private static String[] names = {"bill","hill","jill"};

public static void main(String[] args) {
//调用方法
try{
// 可能出现异常的代码
checkUsername("nill");
System.out.println("注册成功");//如果没有异常就是注册成功,有异常就不会执行这一句
}catch(RegisterException e){
//处理异常
e.printStackTrace();
}
}

//判断当前注册账号是否存在
//因为是编译期异常,又想调用者去处理 所以声明该异常
public static boolean checkUsername(String uname) throws LoginException{
for (String name : names) {
if(name.equals(uname)){//如果名字在这里面 就抛出登陆异常
throw new RegisterException("亲"+name+"已经被注册了!");
}
}
return true;
}
}

标签:知识点,String,自定义,抛出,异常,public,RegisterException
From: https://www.cnblogs.com/zhaoshengfu/p/18052875

相关文章

  • 知识点try catsh
     /*trycatch:自己处理异常*try{*可能出现异常的代码*}catch(异常类名Ae){*如果出现了异常类A类型的异常,那么执行该代码*}...(catch可以有多个)*finally{*最终肯定必须要执行的代码(例如释放资源的代码)*}*代码执行的顺序:*1.try内的代码从出现异常的那......
  • 总结的Java知识点集合
    这是我读大学时的Java知识点总结,还不全面,后续会逐渐增加完善。知识点集合实例变量实例变量是指在类中声明的变量,其值是针对类的每个实例而独立存储的。每个类的实例都有自己的一组实例变量,它们的值可以在对象创建时初始化,并在整个对象的生命周期中保持不变或者随着对象的状态而......
  • 知识点
    java.util包提供了Date类来封装当前的日期和时间。Date类提供两个构造函数来实例化Date对象。第一个构造函数使用当前日期和时间来初始化对象。Date();第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。Date(longmillisec);Date对象创建以后,可以调......
  • FPGA数码管知识点整理
    知识点:  数码管控制分为位选和段选,通过位控制哪一个数码管亮,通过段选控制数码管中某一段亮。  我硬件买的上面的是共阳极的,也就是段选位给低电平就能亮。  下面是段选的位控制要显示的数据。比如数字0只要让G位灭掉就行,通过给段选8'h1100_0000 (共阳极),将g和点灭掉就是0......
  • 网络知识点
    TCP/IP协议通常分为四层:应用层,传输层,网络层,网络接口层网络接口层的传输单位是帧,网络层的传输单位是包,传输层的传输单位是段,应用层的传输单位是报文 1、应用层:HTTP、DNS、FTP(应用层工作在操作系统中的用户态,其他层在内核态)2、传输层:TCP、UDP3、网络层:IPiPv4协议,IP的地址......
  • CSS知识点总结
    盒模型宽度:width高度:height边框:border圆角:border-radius外边距:margin内边距:padding阴影效果:box-shadow背景:background背景颜色:background-color背景图片:background-image背景位置:background-position背景大小:background-size背景(图片)是......
  • 软考高项知识点汇总(一)
    一、信息与信息化1.信息(1)定义。1)控制论的创始人维纳认为:信息就是信息,它既不是物质也不是能量。2)根据信息化的奠基者香农的描述:信息用来“消除不确定的因素”。3)信息的概念存在两个基本的层次,即本体论层次和认识论层次。前者是纯客观的层次,只与客体本身的因素有关,与主体的因素......
  • 知识点
    浅析Java中的final关键字谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字。另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法。下面是本文的目录大纲:一.final关键字的基本用法二.深入理解final......
  • Linux内核的知识点
    1、发生硬件中断后,ARM处理器做了哪些事情?答:当CPU感知到中断发生后,硬件会自动做如下一些事情:1)保存中断发生时CPSR寄存器的内容到SPSR_irq寄存器中;2)修改CPSR寄存器,让CPU进入处理器模式(processormode)中的IRQ模式,即CPSR寄存器中的M域设置为IRQMode。......
  • 模型 算法 知识点
    1.为什么用多头(Multi-Head)注意力:-多头注意力允许模型在不同的表示子空间中学习信息,这样可以让模型同时关注不同的信息维度。每个头学习到的信息可以独立地编码输入序列的不同方面,然后将这些信息综合起来,得到更丰富的表示。2.为什么要除以根号D:-将得分除以根号D(得分归一化)可......