拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Java自定义异常类 方法重写异常规则

一、自定义异常类Java 允许开发者根据业务需求自定义专属异常类用于处理项目中的业务异常如密码非法、账号不存在、权限不足等场景。1.1 自定义异常分类规则自定义异常的类型由父类继承关系决定自定义运行时异常自定义类继承RuntimeException或其子类 特点编译器不强制检测代码可处理、可不处理自定义编译时受检异常自定义类继承Exception与 RuntimeException 无继承关系 特点编译器强制检测代码中必须处理否则编译报错1.2 自定义异常类规范自定义异常类一般需要提供两个构造方法无参数的构造方法有参数的构造方法参数类型为 String接收异常信息利用super(message)调用父类构造为异常信息属性赋值1.3 完整代码示例密码校验自定义异常案例package Test_02; import java.util.ArrayList; import java.util.Scanner; public class TestMyException { public static void main(String[] args) { Scanner sc new Scanner(System.in); System.out.println(请输入您的密码); String pasword sc.next(); checkPassword(pasword); } //监测密码 public static void checkPassword(String psw) { try { if(psw.length()!6) { //抛出异常并且带有“此密码必须为6位”异常信息-抛出关于密码监测异常 throw new CheckedPasswordException(此密码必须为6位); } System.out.println(密码输入正确....); System.out.println(请继续一下的操作); }catch(CheckedPasswordException c) { // String message c.getMessage();//为用户做提示信息用的 // System.err.println(message); c.printStackTrace(); } } } //自定义编译期异常继承Exception class CheckedPasswordException extends Exception { public CheckedPasswordException() {} public CheckedPasswordException(String message) { super(message); } }运行测试输入长度不等于 6 的密码会手动抛出我们自定义的CheckedPasswordException异常进入 catch 块打印异常栈信息。二、方法重写Override异常约束规则2.1 方法重写基础规则子类的方法名形参列表返回值类型和父类相同协变返回除外子类的访问修饰符权限大于等于父类权限权限只能放宽不能缩小2.2 重写异常核心规则⭐面试重点一句话口诀可少、可子、不可多、不可父✅ 可以不抛出任何异常✅ 可以抛出父类抛出异常的子类异常❌ 不可以抛出比父类范围更大的异常父类异常的父类❌ 不可以抛出父类没有的新编译时异常细分说明如果父类方法没有抛出任何异常子类重写方法也不能抛出编译时异常运行时异常不受此限制可以抛出如果父类方法抛出某个异常子类重写方法只能抛出该异常、该异常的子类或者不抛异常。2.3 简单示例辅助理解class Father{ public void test() throws IOException{ //父类抛出IOException } } class Son extends Father{ // ✅合法抛出IOException子类FileNotFoundException Override public void test() throws FileNotFoundException{ } // ✅合法不抛出任何异常 /* Override public void test(){ } */ // ❌非法抛出IOException父类Exception违反规则 /* Override public void test() throws Exception{ } */ }
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门