异常——JavaSE基础
异常
异常的分类
- 检查性异常
- 运行时异常:可能被程序员避免的异常,运行时异常可以在编译时被忽略
- 错误ERROR:错误不是异常
在Java中把异常当作对象来处理,并且定义了一个基类java.lang.Throwable
作为所有异常的超类
在Java API中已经定义了许多异常类,这些异常类分为两大类,错误Error和异常Exception
public class Demo02 { public static void main(String[] args) { try { System.out.println(10 / 0); }catch (ArithmeticException e){ System.out.println("抛出异常!"); System.out.println(e.getMessage()); e.printStackTrace(); // 打印错误的栈信息 }finally { System.out.println("finally语句块一般用于释放占用的资源"); } } }
使用Throwable
捕获所有异常或错误
可以使用多层catch捕获遗漏的异常
public class Demo02 { public static void main(String[] args) { try { //System.out.println(10 / 0); int[] a = new int[10]; a[10] = 1; }catch (ArithmeticException e){ // 捕获算术异常 System.out.println("抛出异常!"); System.out.println(e.getMessage()); e.printStackTrace(); // 打印错误的栈信息 }catch (Exception e){ // 捕获所有异常,用于捕获遗漏的异常 System.out.println(e); }finally { System.out.println("finally"); } } }
自定义异常
除了可以使用Java异常类中自带的异常,也可以继承Exception
类自定义一个异常
自定义异常
public class MyException extends Exception{ private int detail; public MyException(int a) { this.detail = a; } @Override public String toString() { return "MyException{" + "detail=" + detail + '}'; } }
测试类
public class Demo03 { public static void main(String[] args) { try{ demo03(11); // 修改这里的参数为小于等于10的数,则不会抛出异常 }catch (MyException e){ System.out.println("MyException=>" + e); } } static void demo03(int a) throws MyException{ System.out.println("传递的参数为:" + a); // 如果a > 10则抛出异常,否则不抛出 if (a > 10) { throw new MyException(a); } System.out.println("OK"); } }
throw
是手动抛出异常,throws
是方法抛出异常
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」