Java中的异常处理详解

JAVA中异常处理详解 异常(Exception)是程序执行期间发生的事件,它会中断程序的正常指令流。简单来说,异常是一个表示程序出现错误或异常状态的对象。在Java中,异常是一种特殊类型的对象,它从类继承而来。当方法遇到无法处理的情况时,会创建一个异常对象并将其"抛出",然后Java运行时系统会寻找能够"捕获"并处理这个异常的代码。当标准异常类不足以表达特定的错误情况时,可以创建自定义异常类。// 自定义已检查异常super("余额不足,还需 " + amount + " 元");// 使用自定义异常A6。 阅读详情
异常处理的课堂笔记,希望对大家有用。
 转载的时候请注明出处:http://blog.youkuaiyun.com/javaeeteacher 谢谢!!!!
1、什么是异常处理

异常:程序在运行过程中的一些特殊情况,例如:内存不够用,文件找不到,对象是Null,数组下标越界。当产生这些特殊情况的时候,可能会造成程序不能正常运行。

异常处理:让程序在发生异常的时候能够正常执行。 

2、异常分类

检查性异常,必须处理,如果不处理,编译不能通过。

非检查性异常,可以不处理,但是一旦发生,程序就不能继续运行。 

3、对于非检查性异常

虽然编译的时候不会报错,能够运行。但是运行的时候,如果发生错误,后果很严重。所以还是要处理。可以通过增加代码来解决。

例子:对于NullPointerException,在调用方法之前可以检查这个对象是否为null

if(date!=null){

   date.getTime();

}

例子:a/b(b为0产生异常),代码中可以检查b是否为0

if(b!=0)

   a/b;

else

   // 抛出异常!

 也可以采用try-catch进行处理。

 4、try...catch对异常处理

准备工作:在进行异常处理之前,必须清楚可能会发生哪些异常,异常与要调用的方法有关,通常在方法的定义中通过throws声明可能发生的异常。

把可能产生异常的代码放在try语句中;

针对每种可能出现的异常,编写一个catch,catch中写出异常类型;

在catch对应的代码中编写对异常进行处理的代码,当异常产生并与当前异常类型匹配,将执行catch中的代码。

基本结构:

try{

   // 可能产生异常的代码

}catch(异常类型 异常对象){

   // 异常产生时候的处理代码

}

 

注意:

每种类型的异常都必须有对应的catch,所有的异常都应该处理。

可以使用某个父类异常匹配多个子类异常。例如:catch(Exception e){}

如果异常类型之间有继承关系,子类一定要在前面。

如果希望某个变量在try和catch中都可以使用,则应该把变量的定义放在try语句之前。

 

例子:

package ch11;

 

import java.io.IOException;

 

public class Test {

 

       public static void main(String[] args) {

              String str1 = new String("111a");

              str1 = "22";

              String str2 = "456";

              // 把可能产生异常的代码写在try语句中

              try{

                     int x = Integer.parseInt(str1);

                     int y = Integer.parseInt(str2);

                     System.in.read();

                     // 当产生异常的时候,try语句中异常代码之后的代码不会执行

                     System.out.println(x+y);

                     // return ;

              }catch(NumberFormatException e){ // 根据可能会出现的异常,写Catch,每种

 

类型的异常可以写一个Catch,Catch可以有多个,可以用父类异常匹配多个子类异常

                     // 如果多个Catch中的异常类型有继承关系,子类要写在前面

                     // 如果匹配上某种类型的异常,将执行catch中的代码

                     System.out.println(e.getMessage());

                     System.out.println("---------------------------------");

                     System.out.println(e.toString());

                     System.out.println("---------------------------------");

                     e.printStackTrace();

              }catch(IOException e){

                    

              }

              // 如果try语句没有给出catch,则必须给出finally,不管是否产生异常,

 

finally中代码都将执行,如果给出catch,也可以给出finally

              finally{

                     System.out.println("程序继续运行!");

              }

             

              //System.out.println(new Test().check());

       }

      

       public boolean check() throws IOException{

              String str = "adasf";

              System.in.read();

              int a = Integer.parseInt(str);

 

              return true;

       }

 

}

 

5、获取异常信息

当产生异常的时候,会匹配上某个catch,系统会把异常对象赋值给catch中的变量,在catch代码块中可以访问异常信息,通过如下方法:

getMessage() 得到异常的最简单的描述

toString() 得到比较详细的异常信息

printStackTrace() 会把异常信息输出在默认的输出设备中。

例如:

try{

   // 可能产生异常的代码

}catch(Exception e){

   System.out.println(e.toString());

   System.out.println(e.getMessage());

   e.printStackTrace();

}

 

6、finally

如果希望某些代码一定执行,不管是否发生异常,可以把这些代码放在finally中,与try一起使用,

 

基本结构

try{

  // 代码块

}catch(异常1 e1){

 

}catch(异常2 e2){

 

}finally{

   // 一定要执行的代码

}

 

即使在try或者catch中有return语句,finally也一定会执行,在return之前执行。

 

7、异常的抛出

异常通常在方法中抛出,通过throw关键字,例如:throw new MyException("sds");

如果方法中有抛出异常的代码,则方法的声明中应该使用throws声明异常的类型,例如:

public void print() throws MyException{

   ...

      throw new MyException("sdfs");

   ...

}

 

8、创建自己的异常类

继承Exception,实现构造方法即可。

package ch11;

 

public class MyException extends Exception {

       public MyException(){

             

       }

       public MyException(String args){

              super(args);

       }

}

 

9、例子

package ch11;

 

public class Exercise {

 

       public static void main(String[] args) {

              int a[] = {1,3,4};

              boolean hasException = false;

              try{

                     a[3] = 4;

//                   hasException = false;

              }catch(Exception e){

                     System.out.println("数组越界!");

                     hasException = true;

              }finally{

                     if(hasException){

                            System.out.println("程序异常运行结束!");

                     }else{

                            System.out.println("程序正常运行结束!");

                     }

              }

             

              Exercise e = new Exercise();

              try{

                     e.setAge(1000);

              }catch(MyException ee){

                     System.out.println(ee.getMessage());

              }

       }

      

       public void setAge(int age) throws MyException{

              if(age<0 || age>120){

                     throw new MyException(age+"不是一个合理的年龄值!");

              }

       }

}

http://blog.youkuaiyun.com/javaeeteacher

Java中的异常处理机制是什么? 异常处理是一种编程技术,用于检测和处理程序运行期间发生的错误。在Java中,异常处理机制主要包括异常的抛出、捕获、处理和传递等环节。通过适当的异常处理,可以提高程序的健壮性,确保在遇到错误时程序能够优雅地恢复或终止。除了使用Java内置的异常类外,还可以根据需要定义自定义异常类,以更精确地描述程序中发生的错误。37 }811 }12}1316 try {21 }22 }23}Java中的异常处理机制是确保程序健壮性和用户友好的重要工具。 阅读详情

相关推荐

envi5.3处理高分二号影像数据详细过程记录

全文根据此篇文章进行数据处理: tm影像辐射定标_高分二号影像数据预处理及裁剪过程 其他参考: 学习笔记---遥感影像辐射定标与大气校正 利用ENVI自带全球DEM数据计算区域平均高程 高分二号数据处理流程(有高分二号的数据信息) GF2有多光谱和全色两个数据,MSS是多光谱的,PAN是全色的,多光谱的分辨率低,全色的高,需要把这两个数据融合,融合之前需要做定标等处理,获取经纬度。 一、多光谱影像处理 1. 辐射定标 以这个为例: 其他路径\2022.4.2...

ligous的博客 5万+

对象为null的几种判断方法

还在用“a!=null”吗?优雅判断对象为null的几种方法...

weixin_44700035的博客 3523

《点亮创新灯塔!AI应用架构师与中小学初等教育AI智能体,共筑智能化教育辅助创新灯塔》

中小学AI智能体,是基于AI技术,能感知教育场景、理解教育规律、辅助教师教学和学生学习的智能系统。做老师“做不了”的事:比如5分钟批改45本作业,精准统计每个学生的易错点;做老师“做不好”的事:比如根据学生的学习风格(视觉/听觉/动觉)推荐个性化内容;绝不做老师“该做的事”:比如情感交流、价值观引导、创意教学设计——这些“人的温度”,AI永远无法替代。我是林宇,资深AI应用架构师,专注教育AI领域8年,参与过10多个中小学AI智能体项目,曾为北京、上海、深圳等城市的100多所学校提供AI教育解决方案。

Java大师兄的博客 433

Java异常处理详解

在Java开发中,异常处理是一项至关重要的任务。合理处理异常能够增强程序的稳定性和可靠性,提高用户体验。本文将带领读者深入了解Java异常处理的方方面面,为您提供全面的指导和实践经验。异常处理是Java程序设计中的一个重要话题,合理处理异常是每个Java开发人员都应该掌握的基本技能。通过本文的学习,相信读者已经对Java异常处理有了更加深入的了解,并能够在实际项目中编写健壮的Java应用程序。

沉淀所学,分享所思,让热爱与成长同行。商务记录AI实战经验,助力开发者快速成长。 热爱AI,希望做出有影响力的技术成果。 技术点亮生活,分享连接价值与机会。 专注AI落地实战,陪你走好技术每一步。 5391

【HCIA学习记录】WLAN配置实验

HCIA-WLAN

寸先生的AI道路 3875

IMU预积分--详细推导过程

IMU预积分推导

weixin_51547017的博客 2万+

java异常处理

什么是异常 异常处理 如何捕捉异常? finally语句 常见异常 自定义异常 那么具体如何自定义异常类呢? throw关键字 throws关键字 运行时异常 异常处理流程

随便写点C++和JAVA的知识 6305

基于STM32的智能浇花系统毕业设计(全部资料)

摘要:本文设计了一种基于STM32单片机的智能浇花系统,集成了环境温湿度检测、土壤温湿度监测、LCD显示、Wi-Fi联网及手机APP远程控制等功能。系统通过传感器实时采集环境参数,自动控制水泵工作实现智能灌溉,同时支持用户通过手机APP远程监控和调节。论文详细阐述了硬件选型、软件设计及系统测试过程,验证了系统的稳定性和实用性。该设计为家庭园艺提供了智能化解决方案,具有节水高效、操作便捷等特点。关键词:STM32;智能灌溉;远程控制;环境监测;Wi-Fi通信。

3254968421的博客 1196

Java 异常处理机制详解

在 Java 编程中,异常处理是一个至关重要的概念。它帮助我们处理程序执行过程中可能出现的错误或异常情况,从而提高程序的可靠性和稳定性。本文将详细介绍 Java 异常处理机制,包括异常的定义、分类、处理方式以及一些最佳实践。

专注Java和MySQL领域知识分享 1991

内存泄漏系列专题分析之二十一:高通相机CamX内存泄漏&内存占用分析--GPU内存拆解

通过上述debug方式,可以看到patch补丁可以顺利debug各种ION内存分布,可以通过它分析ION内存占用问题。同时我们还可以分析GPU内存泄漏问题,同样的方式可以看到所有的GPU内存分布,如果某个GPU内存持续增长,就极有可能内存泄漏,然后更具堆栈信息去分析代码,并解决GPU内存泄漏问题。!!

456

AgentScope实战训练营- Java从零开始快速构建Agent完整教程

本文基于阿里巴巴开源的 AgentScope Java 框架,从零开始手把手带你构建 AI 智能体应用。内容涵盖环境搭建、基础对话、工具调用、结构化输出、多Agent流水线、Hook可观测性、会话持久化、MCP协议、RAG知识库集成、多模态工具、技能系统、Spring Boot Web部署等21个核心模块,附带完整可运行代码示例,帮助Java开发者快速掌握Agent开发全流程。

program哲学 867

java的异常处理机制详解

Java异常的处理主要依赖于try,catch,finally,throws,throw这五个关键字。下面分别介绍它们:

jingwen的博客 1万+

基于嵌入式Linux设计的智能车库(GEC6818)

随着城市化进程的加快,传统停车管理方式存在效率低下、人工成本高、车主体验差等问题。为解决这些问题,本项目基于嵌入式Linux技术,设计并实现了一套智能车库管理系统。该系统采用GEC6818开发板作为核心控制器,运行Qt应用程序,并结合USB免驱摄像头进行车牌识别,RFID模块完成刷卡支付,SQLite数据库存储车主信息和停车记录。系统提供车主注册、用户管理、出入库管理、停车费结算、车辆查询等功能,并具备语音播报提示,提高用户体验。通过本系统,停车场管理更加高效、智能,有助于提升停车服务质量,减少人工干预,适

446

Java异常处理机制详解

本文将全面解析Java中的异常处理机制,帮助开发者更好地理解和应用这一强大工具。

YT的博客 938

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java中的异常处理机制详解

在上面的例子中,如果try块中的代码抛出了任何类型的异常(除了运行时异常),catch块将会捕获这个异常并执行其中的代码。在本例中,catch块输出了一条包含异常类型的消息。如果try块中的代码没有抛出任何类型的异常(或者抛出的运行时异常未被catch块捕获),那么catch块将不会执行任何操作。本文将详细介绍Java中的异常处理机制,包括异常的类型、处理流程、常见的处理方式以及如何抛出和自定义异常。在Java中,除了标准异常类之外,您还可以创建自定义异常类来表示特定于您的应用程序的异常条件。

yokeyhui的博客 1145

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Java 异常处理 详解

Java异常体系结构提供了丰富的工具来处理程序执行中的各种错误情境。通过理解异常的分类和处理机制,遵循标准化的处理规则,并运用适当的技巧,可以编写更加健壮、可维护的代码。特别需要注意的是,合理使用异常处理,不仅仅是为了捕获错误,更重要的是确保程序在异常情境下的正确性、可控性和用户体验。

goTsHgo的博客 1492

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java中的异常处理机制

Java中的异常处理不仅限于简单的错误报告,还包括了对异常情况的捕获、处理以及必要的资源清理。然而,也需要注意避免过度使用异常处理,因为它可能会对程序的性能产生负面影响,并掩盖潜在的逻辑错误。是Java中处理异常的一种强大机制,它允许开发者编写健壮的代码,能够优雅地处理异常情况,并确保资源得到正确释放。这些异常在编译时不需要被显式地处理,但开发者可以选择捕获并处理它们,以提高程序的健壮性。是Java中处理异常的基本结构,它们共同工作以确保异常能够被妥善处理,并且必要的资源能够被正确释放。

hong161688的博客 1222

Java 中的异常处理机制详解

异常是程序执行期间发生的问题,它中断了程序的正常流程。异常可以由多种原因引起,比如除数为零、数组越界访问、文件找不到等。在 Java 中,所有异常都是从Throwable类派生出来的。Java 的异常处理机制是一个强大的工具,它可以帮助我们编写更加健壮和可维护的代码。正确理解和运用异常处理,不仅能够提高程序的稳定性,还能简化调试过程。希望这篇文章能够为读者提供有价值的指导,帮助大家在日常开发中有效地管理和应对异常情况。

m0_56896669的博客 1241

Java中的异常处理

Java中的异常处理1、异常处理的意义1.1 异常的基本概念1.2 Java处理错误的方法2、错误的分类3、异常的处理3.1 声明抛出异常3.2捕获异常:try、catch和finally语句4、生成异常对象5、声明自己的异常类 1、异常处理的意义 1.1 异常的基本概念 异常:又称例外,是特殊的运行错误对象,对应着Java语言特定的运行错误处理机制。 由于Java程序是字网络环境中运行的,安全成为需要首先考虑的重要因素之一。为了能够及时有效地处理程序中的运行错误,Java中引入了异常和异常类。作为面向对象

WangYaRu 1147

Java 中的异常处理机制

Java的异常处理机制可以让程序具有极好的容错性,让程序更加健壮。当程序运行出现意外情形时,系统会自动生成一个Exception对象来通知程序,从而实现将“业务功能实现代码” 和 “错误处理代码” 分离,提供更好的可读性。

KevinChen2019的博客 6965

【Java】异常处理详解

本文详细介绍了Java异常处理机制,内容包括异常概述、分类、处理方式及最佳实践。异常分为Error(不可恢复的系统级错误)和Exception(可处理的程序异常),其中Exception又分为受检异常(必须处理,如IO操作)和非受检异常(编程错误,应修复代码)。文章重点讲解了try-catch-finally结构、多重catch块、自定义异常创建及异常链的使用方法,并提供了异常处理的最佳实践建议,帮助开发者编写更健壮的Java程序。

小昭的博客 1145
上一篇: Java基础:多线程
下一篇: 2011年全国软件大赛模拟题及参考答案(Java高职组)
老李-大连
博客等级 码龄20年 3206粉丝 308原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值