当前位置: 首页 > news >正文

Java异常讲解

![[Pasted image 20250508105557.png]]

  • RuntimeException:运行时异常,编译阶段不会出现异常提醒,是运行的时候出现的,也叫非检查异常(Unchecked Exceptions).

  • 非运行时异常: 编译异常 ,也叫检查异常(Checked Exceptions).

package JavaProjets;  import java.text.SimpleDateFormat;  
import java.util.Date;  
/*  * author: Warren */public class Main {  public static void main(String[] args) {  //编译时异常,必须处理,不然代码报错  
//        String time="2021-09-10";  
//        SimpleDateFormat sdf=new SimpleDateFormat(time);  
//  
//        Date date=sdf.parse(time);  
//        System.out.println(date);  //运行时异常,编译阶段不需要处理  
//        int []arr={1,2,3};  
//        System.out.println(arr[5]);  }  
}

异常的作用:查看bug的信息,或者作为方法的一种特殊的返回值,告诉调用者底层的执行情况.

处理异常
  • jvm处理异常的默认方式:把异常的关键信息打印在控制台,并终止程序的执行,出现异常位置下面的代码不再执行.
  • 捕获异常:使用try....catch,可以让程序继续往下执行而不停止.
package JavaProjets;  import java.text.SimpleDateFormat;  
import java.util.Date;  
/*  * author: Warren */public class Main {  public static void main(String[] args) {  int []arr={1,2,3,4};  try{  System.out.println(arr[8]);  }catch(ArrayIndexOutOfBoundsException e){  System.out.println("你的索引有问题");  }  }  
}
  • 如果try中的代码没有问题,则不会执行catch中的代码.
  • 如果try中代码出现多个错误,则要写多个对应的catch语句与之对应.
  • 如果我们要捕获多个异常,而且这些异常存在父子关系,那么父类异常一定要写在子类异常的下面.
  • 如果try中的异常没有被捕获,会按照 Jvm 默认的处理方式处理异常,终止后面的代码执行.

![[Pasted image 20241107162713.png]]

  • 示例:
package JavaProjets;  
/*  * author: Warren */public class Main {  public static void main(String[] args) {  int[] arr = {1, 2, 3, 4, 9};  System.out.println(getMax(arr));  }  public static int getMax(int[] arr) {  if (arr == null || arr.length == 0) {  throw new NullPointerException();  }  if (arr.length == 0) {  throw new ArrayIndexOutOfBoundsException();  }  int max = 0;  for (int i = 0; i < 5; i++) {  max = arr[0];  if (arr[i] > max) {  max = arr[i];  }  }  return max;  }  
}
常用方法

![[Pasted image 20241107162100.png]]

printStackTrace:只会打印错误信息,不会停止程序的运行.

自定义异常

自定义异常类继承 Exception 类来创建受检异常,或继承 RuntimeException 类来创建非受检异常

自定义检查时异常(继承Exception)
// 自定义受检异常,继承Exception
public class MyCheckedException extends Exception {// 默认构造方法public MyCheckedException() {super();}// 带有错误消息的构造方法public MyCheckedException(String message) {super(message);}// 带有错误消息和原因的构造方法public MyCheckedException(String message, Throwable cause) {super(message, cause);}// 带有原因的构造方法public MyCheckedException(Throwable cause) {super(cause);}
}
自定义非检查异常(继承 RuntimeException
// 自定义非受检异常,继承RuntimeException
public class MyUncheckedException extends RuntimeException {// 默认构造方法public MyUncheckedException() {super();}// 带有错误消息的构造方法public MyUncheckedException(String message) {super(message);}// 带有错误消息和原因的构造方法public MyUncheckedException(String message, Throwable cause) {super(message, cause);}// 带有原因的构造方法public MyUncheckedException(Throwable cause) {super(cause);}
}
http://www.dtcms.com/a/315864.html

相关文章:

  • PowerShell 入门2: 使用帮助系统
  • 开源密码恢复实用程序 Hashcat 7.0.0 发布
  • 灰色优选模型及算法MATLAB代码
  • 2025年6月中科院2区-红杉优化算法Sequoia Optimization Algorithm-附Matlab免费代码
  • vscode 关闭自动更新
  • ELK是什么
  • 数学建模-线性规划。
  • 数学建模算法-day[15]
  • ubuntu24安装vulkan-sdk
  • golang实现支持100万个并发连接(例如,HTTP长连接或WebSocket连接)系统架构设计详解
  • 【单板硬件】基于AD的单板硬件设计
  • 剑指offer第2版:字符串
  • DAY 36 复习日
  • 【深度学习新浪潮】TripoAI是一款什么样的产品?
  • MinIO01-入门
  • 自抗扰ADCR--跟踪微分器的作用
  • 【unitrix】 7.3 二进制整数 带进位加法实现(int_add.rs)
  • 【2025WACV-目标检测方向】
  • uniapp 类似popover气泡下拉框组件
  • 21 - 大模型智能体进阶指南 (5):电影助手的知识革命:从静态存储到实时进化 —— 检索增强与自主学习的协同机制
  • 防水防尘防摔性能很好的智能三防手机,还有22000mAh大电池
  • 云平台监控-Zabbix企业级高级应用
  • Cisco 3750X交换机更新到IOS 15.2后无法启动 提示:Boot process failed...
  • 水库雨水情测报和大坝安全监测系统解决方案
  • 极验 G-star 人才特训营:为业务安全领域培养下一代新兴力量
  • 单链表应用实践
  • Python包安全工程实践:构建安全可靠的Python生态系统
  • AI - RAG知识库-进阶(一)
  • Effective C++ 条款24:若所有参数皆需类型转换,请为此采用 non-member 函数
  • 数据结构基础:链表(2)——双向链表、循环链表、内核链表