java  异常详解及应用实例

发布时间 - 2026-01-10 22:37:30    点击率:

java  异常

 异常的使用实例(异常分类:Error(是由JVM调用系统底层发生的,只能修改代码) 和 Exception(是JVM发生的,可以进行针对性处理))

 1.如果一个方法内可能出现异常,那么可以将异常通过throw的方式new 出相应的异常类,并在方法上   声明throws可能抛出的异常类抛给调用者,调用者可以进行异常捕获,或者继续抛出异常由 上层调用者继续处理,    如果整个过程都没有将异常进行任何处理,那么将由JVM虚拟机进行默认的处理 

2.调用者可以对异常进行try()catch(){}的异常处理, 也可以继续在方法后面throws该异常,catch代码块中    如果不处理也可以进行throw该异常

 3.运行时异常RuntimeException可以不进行显式的异常声明

 4.如果父类中的方法抛出了异常,如果子类对方法进行重写后也抛出异常,那么该异常必须不能大于父类的异常类, 如果父类中方法没有抛出异常,而子类中覆盖的方法却抛出了异常,那么此时只能进行try catch来捕获此异常,但是也可以将此异常在catch代码块中throw  new RuntimeExcetion()进行抛出,这样方法不用进行throws声明  

 5.很多时候异常并不需要调用者进行处理,调用者不一定具有处理能力

 6.异常应该包装成上层调用者可以识别的异常类型,面向不同的调用者,报告不同的异常信息,否者调用者不知道如何处理该异常

    在开发中这点十分重要

  7.finally代码块中常常进行资源的释放及关闭操作,对于打开的资源应该进行反方向的关闭操作,因为资源可能存在依赖性

  8.如果不进行声明异常,那么目的是不让调用者进行处理,让调用者的程序停止,这样必须修改错误代码

public class ExceptionDemo {

 public static void main(String[] args) {
 //OutOfMemoryError内存溢出错误,
 int[] i = new int[1024*1024*1024];
 System.out.println(i[1]);
 
 //ArrayIndexOutOfBoundsException索引越界异常
 int[] s = new int[2];
 System.out.println(s[2]);
 
 
 Calc calc = new Calc(); 
 //假如我们在这里捕获异常
 try {
  calc.run(4, 0);
  calc.run(4, -1);
 } catch (NegativeException e) {//必须先抛出异常的自定义子类
  e.printStackTrace();
  System.out.println(e.getMessage());
  //throw e;//可以继续将此异常抛出
 } catch (ArithmeticException e){//抛出自定义异常类的父类
  e.printStackTrace();
  System.out.println(e.getMessage());
  //throw e;
 } finally {
  System.out.println("finally肯定会执行到");
 }
 //如果上面进行了异常捕获,那么代码可以继续执行,否者代码不能继续执行
 System.out.println("可以执行到!");
 
 try {
  calc.run(4, -1);
  
 } catch (NegativeException e) {
  e.printStackTrace();
  System.out.println(e.getMessage());
  return;
 } finally {
  System.out.println("肯定会执行的");
 }
 System.out.println("执行不到了");//执行不到此行代码
 
 }

}

/**
 * 自定义异常
 */
class NegativeException extends ArithmeticException{
 public NegativeException() {
 }
 public NegativeException(String msg) {
 super(msg);
 }
}

interface AA{
 public abstract void method();
}

class Calc implements AA{
 //ArithmeticException其实为运行时异常(RuntimeException),即使不进行throws声明,也可以通过编译
 public int run(int m,int n)throws ArithmeticException,NegativeException{
 if(n==0){
  throw new ArithmeticException("除数不能为0");
 }else if(n<0){
  throw new NegativeException("除数不能为负数");
 }
 int s = m/n;
 return s ;
 }

 @Override
 public void method() {
 try {
  int p = 4/0;
 } catch (ArithmeticException e) {
  e.printStackTrace();
  throw new RuntimeException();//将异常继续抛出为运行时异常
 }
 }
}


感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# java  # 异常  # 异常实例  # 异常详解  # Java异常 Exception类及其子类(实例讲解)  # Java自定义异常类的实例详解  # java 异常的实例详解  # Java异常处理运行时异常(RuntimeException)详解及实例  # java异常处理详细介绍及实例  # Java 异常的栈轨迹(Stack Trace)详解及实例代码  # Java中自定义异常详解及实例代码  # Java异常处理实例教程  # Java异常处理实例分析  # java简单自定义异常实例代码  # 抛出  # 调用者  # 自定义  # 子类  # 类中  # 将此  # 能为  # 在这里  # 肯定会  # 是由  # 并在  # 可以通过  # 希望能  # 重写  # 谢谢大家  # 将由  # 以对  # 可能出现  # 必须先  # 如何处理 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: iOS正则表达式验证手机号、邮箱、身份证号等  清除minerd进程的简单方法  高端云建站费用究竟需要多少预算?  如何快速搭建自助建站会员专属系统?  phpredis提高消息队列的实时性方法(推荐)  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  潮流网站制作头像软件下载,适合母子的网名有哪些?  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  如何用AWS免费套餐快速搭建高效网站?  如何在建站宝盒中设置产品搜索功能?  UC浏览器如何设置启动页 UC浏览器启动页设置方法  Laravel如何集成Inertia.js与Vue/React?(安装配置)  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  iOS发送验证码倒计时应用  如何快速搭建虚拟主机网站?新手必看指南  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  敲碗10年!Mac系列传将迎来「触控与联网」双革新  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  黑客如何利用漏洞与弱口令入侵网站服务器?  EditPlus中的正则表达式实战(6)  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  Laravel如何为API编写文档_Laravel API文档生成与维护方法  JS实现鼠标移上去显示图片或微信二维码  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】  Laravel如何配置任务调度?(Cron Job示例)  教你用AI将一段旋律扩展成一首完整的曲子  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  Java垃圾回收器的方法和原理总结  ,交易猫的商品怎么发布到网站上去?  php 三元运算符实例详细介绍  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  活动邀请函制作网站有哪些,活动邀请函文案?  太平洋网站制作公司,网络用语太平洋是什么意思?  用v-html解决Vue.js渲染中html标签不被解析的问题  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  HTML 中动态设置元素 name 属性的正确语法详解  高防服务器租用首荐平台,企业级优惠套餐快速部署  Laravel怎么发送邮件_Laravel Mail类SMTP配置教程  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  长沙企业网站制作哪家好,长沙水业集团官方网站?  高防服务器租用指南:配置选择与快速部署攻略  Bootstrap整体框架之CSS12栅格系统