异常之(自定义异常)
自定义异常: 需继承Exception类 步骤: 1.创建自定义异常类 2.在方法中通过throw关键字抛出异常对象 3.如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常继续进行下一步操作。 4.在出现异常方法的调用者中捕获并处理异常
import java.util.Scanner; //测试异常类 public class Main { public static void main(String[] args) { try { new Main().test(20); } catch(Exception e) {
//这里可以增加一些处理的代码块,比判断等这些代码去处理异常不要只是简单的输出 System.out.println("MyException"+e);//打印异常信息,e:相当于调用了toString方法 } finally { } } //可能会存在异常的方法 static void test(int a)throws MyException{//当有异常我们方法内不处理时,向上抛出,那这时,谁调用这个方法,那谁就要用try-catch方式去处理这个异常 System.out.println("输入的值为="+a); if (a>10){ throw new MyException(a);//抛出 } System.out.println("ok"); } } //自定义异常类 class MyException extends Exception{ //传递数字>10抛出异常 private int detail; public MyException(){} public MyException(int detail){ this.detail=detail; } //打印方法:异常的打印信息 public String toString(){ return "MyException{"+"detail="+detail+"}"; } }
实际应用中总结: 处理运行时异常时,采用逻辑去合理规避同时辅助try-catch处理 在多重catch块后面,可以加一个catch(Exception)处理可能会被遗漏的异常 对于不确定的代码也可以加上try-catch,处理潜在的异常 尽量去处理异常,切忌不是只是简单地调用printStackTrace()去打印输出 具体如何处理异常,要根据不同的业务需要和异常类型去决定 尽量添加finally语句块去释放占用的资源
见名知意 package 异常; /*如何定义异常类 * 1、继承于现有的异常结构:RuntimeException 、Excption * 2、提供全局常量serialVersionUID * 3、提供重载的构造器 */ public class MyException extends RuntimeException{//要处理什么异常就把类名命名为什么 //序列号:唯一标识符 static final long serialVersionUID = -7034897190745766939L; public MyException() { } public MyException(String msg) { super(msg); } } class Studeb1{ int id; public void iymm(int id) {//这里可以不写throws Exception if (id>0) { this.id=id; }else { // System.out.println("你的数据非法"); //手动抛出异常对象 // throw new RuntimeException("你的数据非法"); throw new MyException("你的数据非法"); //错误的,只有异常体系的才能throw // throw new String("不能输入负数"); } } @Override public String toString() { return "Studeb [id=" + id + "]"; } } class Test{ public static void main(String[] args) { try { Studeb1 a=new Studeb1(); a.iymm(1000); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~