自定义异常
当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.说出你项目中常见的五个运行时异常
略(自己了解多少写多少,根据自身要求来看)