异常处理
1、异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能出现的异常,是程序员编程错误造成的。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
2、error和Exception的区别
java异常结构中定义有Throwable类,Exception和error是其派生出的两个子类。其中Exception表示由于网络故障,文件损坏,设备错误,用户输入非法等情况导致的异常。而error表示java运行时环境出现的错误,入JVM内存资源耗尽。
3、常见的Runtime Exception
NullPointerException 空指针(引用)引发的异常
NumberFormatException:数据格式转换出现问题时出现此异常。
ClassCastException:强制类型转换类型不匹配时出现此异常。
ArrayIndexOutOfBoundsException:数组下标越界,当使用一个不存在的数组下标时出现此异常。
ArithmeticException:数学运行错误时出现此异常
4异常类的继承体系
|-----AWTError
|--------Error---|-----IOError
| |------ThreadDeath
Throwable ---| |------LinkageError
| |---------SQLException
|----------Exception--------|---------IOException |------IndexOutOfBoundsException
|---------RuntimeException------|------NullPointerException
|-------ClassCastException
java的异常可分为可检测异常,非检测异常,自定义异常
可检测异常:经编译器验证,对于声明抛出异常的任何方法,编译器将强制执行处理或声明规则,不捕捉这个异常,编译器就通不过不允许编译。
非检测异常:不遵循处理或声明规则。在产生此类异常时不一定非要采取任何适当操作,编译器不会检查是否已经解决类这样一个异常。RuntimeException也属于非检测异常
自定义异常:是为了表示应用程序的一些错误类型,为代码可能发生的一些或多个问题提供新含义。
4、访问异常信息
>getMessage(); 返回该异常的详细描述字符串
>printStackTrace( ); 将该异常的跟踪栈信息输出到标准错误输出
>printStackTrace(PrintStream s); 将该异常的跟踪栈信息输出到指定输出流
>getStackTrace( ); 返回该异常的跟踪栈信息
5、使用throws声明抛出异常
throws声明抛出只能在方法签名中使用,throws可以声明抛出多个异常类,之间以逗号隔开
语法格式: throws ExceptionClass1, ExceptionClass2...
一旦使用throws语句声明抛出该异常,程序就无须使用try...catch块来捕获异常了
6、使用throw抛出异常
如果需要在程序中自行抛出异常,应使用throw语句,可以单独使用,throw语句抛出的不是异常类,而是一个实例,而且每次只能抛出一个异常实例。
语法格式: throw ExceptionInstance;
7、异常处理规(1)不要过度使用异常(2)不要使用过于庞大的try块(3)避免使用CatchAll语句
(4)不要忽略捕获到的异常
8、自定义异常类
用户自定义异常类都应该继承Exception基类,如果自定义Runtime异常,应继承RuntimeException基类。
定义异常类是通常需要提供两种构造器:一个是无参数的构造器,另一个是带以字符串参数的构造器,这个字符串将作为该异常对象的详细说明(也就是异常对象getMessage方法的返回值)
catch和throw同时使用
在实际应用中,当一个异常出现是,单靠某个方法无法完全处理该异常,必须有几个方法协作才可完全处理该异常。也就是说,异常出现的当前方法中,程序只对异常进行部分处理,还有些方法需要在该方法的调用者中才能完成,所以应该再次抛出异常,这样就可以让该方法的调用这也能捕获到异常。这种情形可以通过在catch块中结合throw来完成。
9、try语句
try{......}语句指定类一段代码,该代码就是一次捕获并处理例外的范围,在执行过程中,该代码可能会产生并抛出一种或几种类型的异常对象,后面的catch语句分别对这些异常作相应的处理。如果没有例外发生,所有的catch代码段被忽略过不执行。
10、catch语句
在catch语句块中用如下方法获取信息
getMessage(); printStackTrace( );
11、finally块
fianlly语句为异常处理提供一个统一的出口,使得在控制流程转到程序其他部分以前,能够对程序的状态做统一的管理,无论try所指定的程序块中是否抛出例外,fianlly所指定的代码都要被执行。
通常在finally语句中可以进行资源的消除工作,如关闭打开的文件,删除临时文件等。
相关推荐
C#异常处理总结及简单实例 一、异常处理的理解? 异常处理是指程序在运行过程中,发生错误会导致程序退出,这种错误,就叫做异常。 因此处理这种错误,就称为异常处理。 二、异常处理如何操作? C# 异常处理时建立在...
MySQL中的异常处理是数据库编程中不可或缺的一部分,它允许开发者预设对可能出现的错误或异常的响应,从而确保程序的稳定性和健壮性。在MySQL中,异常定义和处理主要是通过`DECLARE`语句来实现的。 1. **异常定义**...
异常处理是编程中的一种机制,用于捕获和处理运行时发生的错误或异常情况。异常可以由硬件引发,如硬件异常,也可以由操作系统或应用程序自身触发,即软件异常。当异常发生时,操作系统允许程序有机会检查异常类型并...
在易语言中,线程是并发执行的程序单位,线程结构异常处理是编程过程中非常重要的一环,因为线程可能会遇到各种异常情况,如内存访问错误、除零异常等。 线程结构异常处理源码是易语言中处理这些异常的关键部分。当...
Java 异常处理习题 Java 异常处理是 Java 编程语言中的一种重要机制,用于处理程序在运行时可能出现的错误或异常情况。下面是关于 Java 异常处理的习题和知识点总结: 一、Java 异常处理关键字 * Java 中用来抛出...
"New_SE_Handler"可能是一个新的结构化异常处理程序,结构化异常处理(SEH)是Windows操作系统中的一个特性,用于处理硬件和软件异常。 "GetSeAddr"可能是获取异常发生时的地址函数,这对于分析异常原因和定位问题...
在编程领域,异常处理是确保程序健壮性与稳定性的关键技术。对于C、C++以及基于MFC(Microsoft Foundation Classes)的开发来说,异常处理更是不可或缺的一部分。本篇文章将深入浅析C、C++中的异常处理机制以及MFC中...
详解 SpringCloud Finchley Gateway 统一异常处理 SpringCloud Finchley Gateway 统一异常处理是指在使用 SpringCloud Finchley 版本的 Gateway 时,如何统一处理系统级异常的方法。默认情况下,SpringCloud ...
【异常处理】是编程中必不可少的一个环节,尤其是在Java这样的面向对象语言中。异常处理机制使得程序在遇到错误时能够优雅地中断执行流程,提供错误信息,并有机会进行恢复操作,而不是简单地崩溃。以下是对异常处理...
异常处理是Java编程中至关重要的一个概念,它确保了程序在遇到错误或异常情况时能够以优雅的方式继续执行或者终止。下面是对Java异常处理机制的详细解析。 在Java中,异常是程序运行时发生的错误,它中断了正常的...
ARM处理器异常处理是指ARM微处理器对各种异常情况作出响应和处理的过程。异常指的是处理器在正常执行程序时遇到的特殊情况,例如外部中断请求、未对齐的内存访问错误、指令预取终止等。为了保证系统的稳定性和正确性...
在 PowerBuilder 9(简称 PB9)开发过程中,异常处理是一项关键的技术,它能帮助开发者有效地管理和解决程序中出现的错误,确保系统的稳定运行。在实际应用中,开发者经常会遇到各种预知和不可预知的问题,如系统级...
游标和异常处理 游标是 SQL 的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将...
《ADS异常处理详解》 异常处理是嵌入式系统中至关重要的部分,特别是在基于ARM架构的系统中。本文将深入探讨ARM处理器的异常处理机制,包括异常类型、处理流程、异常优先级以及向量表等内容。 一、异常类型 ARM...
Java异常处理是编程中至关重要的一个环节,它确保了程序在遇到错误时能够优雅地运行,而不是突然崩溃。本实验报告“java实验报告4-异常处理”旨在帮助初学者掌握Java中的异常处理机制,以及如何利用log4j进行日志...
React Native 异常处理库是专门为在React Native框架下开发的混合移动应用提供错误管理和调试支持的工具。React Native允许开发者使用JavaScript编写原生移动应用,但JavaScript代码的运行环境中可能会遇到各种错误...
### Spring Cloud Gateway全局异常处理详解 #### 一、引言 在微服务架构中,网关作为服务入口,承担着路由转发、限流熔断、鉴权认证等职责。Spring Cloud Gateway作为一款基于Spring Framework 5、Project Reactor...
课程作业,实现两数计算及其异常处理,异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行,且保持代码的清晰。 Java中的异常可以是函数...