首页 > 编程知识 正文

java两种异常类型是什么,自定义异常继承exception

时间:2023-05-04 12:18:49 阅读:34684 作者:3199

一、基本概念

Throwable是所有异常的根,java.lang.Throwable

错误是错误的,java.lang.Error

Exception异常,java.lang.Exception

throwable :有两个重要的子类:“执行”和“错误”。 两个都是Java异常处理的重要子类,每个子类都包含许多子类。

错误(错误) :是程序无法处理的错误,表示在执行APP应用程序时发生了严重问题。 大多数错误表示代码运行时存在Java虚拟机(JVM )问题,而与代码编写器执行的操作无关。 例如,如果发生Java虚拟机运行错误(虚拟机错误),并且JVM不再需要继续操作所需的内存资源,则会发生内存外错。 如果发生这些异常,Java虚拟机(JVM )通常会选择退出线程。

这些错误指示虚拟机本身或在虚拟机尝试执行APP应用程序时出现故障,如运行Java虚拟机时出现错误(虚拟机错误、类定义错误)。 这些错误不在APP应用程序的控制和处理能力范围内,并且在大多数情况下,在程序执行过程中是不允许发生的,因此无法检查。 在设计合理的APP应用程序中,即使实际上发生了错误,也不应该试图处理由此导致的异常情况。 在Java中,错误是用Error的子类编写的。

Exception (异常) :是程序本身能够处理的异常。

Exception类具有一个重要的子类—运行时执行。 RuntimeException类及其子类表示由“常规JVM操作”引起的错误。 例如,如果尝试使用null对象引用、除数为零或数组越界,则运行时异常(NullPointerException,ArithmeticException )和arrayindexoutofboundexcepception

注意:异常和错误的区别:异常可以由程序本身处理,但不能处理错误。

二.执行

一般分为Checked异常和Runtime异常,所有RuntimeException类及其子类的实例称为Runtime异常,不属于该类别的异常称为CheckedException。

已检查异常

java程序必须显示对Checked异常的处理,因为只有java语言提供Checked异常,而java认为所有Checked异常都是可以处理的异常。 如果程序未处理Checked异常,则该程序在编译时将出现错误,无法进行编译。 这体现了Java的设计哲学。 没有完善错误处理的代码没有机会运行。 Checked异常的处理方法有两种

1如果您知道如何以当前方式处理异常,请在try.catch块中处理异常。

2如果当前方法不知道如何处理,请在定义方法时声明抛出异常。

1 packagecn.xy.test; 2

3 importjava.io.IOException; 4

5 /**

6 *已检查异常测试方法7 *@authorxy8 *9 */

10 publicclasscheckedexceptionmethods 11 { 12//总异常系统有checkedException和RuntimeException,其中checkedException必须处理

13公共语音方法1 (throws exception 14 (15 system.out.println ) )“我是抛出异常总类的方法”(17 ) 17

18 //抓住这个异常进行处理

19 publicvoidtestmethod1_ 01 (20 { 21tr y }

22 {23 method1; 24 ) 25catch(exceptione ) 26 ) 27e.printstacktrace ); 28 ) 29 ) 30

31 //传达异常

32 publicvoidtestmethod1_ 02 (throws exception 33 { 34 method1); 6636

37 publicvoidtestmethod1_ 03 (throws exception 38 ) 39thrownewexception ); 四十)四十一

42 publicvoidtestmethod1_ 04 (43 { 44 try }

45 {46 throw newException; 47 ) 48catch(exceptione ) 49 ) 50e.printstacktrace ); 51 ) 52 ) 53

54 //checkedException代表IOException

55公共语音方法2 (throwsioexception 56 (57 system.out.println ) )“我是抛出io异常的方法”; (五十九)五十九

60公共语音2 _ 01 () 61(62try

63 {64 method2; 65 ) 66catch(exceptione ) 67 ) 68e.printstacktrace ); 69(70 ) 71

72 publicvoidtestmethod2_ 02 (throws exception 73 ) 74method2); 75 ) 76

77 }

我们熟悉的Checked是异常的

Java.lang.classnotfoundexception

Java.lang.NoSuchMetodException

java.io.IOException

运行时间执行

Runtime经常发生、处理麻烦,如除数为0和序列下标越界等,呈现幸福的龙猫和捕获会严重影响程序的可读性和执行效率。 系统会自动检测并将其传递给默认异常处理程序。 当然,如果有处理请求,也可以捕获它们。

1 packagecn.xy.test; 2

3 /**

4 *运行时异常测试方法5 *@authorxy6 *7 */

8 publicclassruntimeexcetionmethods9(10公共语音方法3 ) throwsruntimeexception11 ) 12system.out.println (我抛出运行时异常

15publicvoidtestmethod3_01(16 ) 17method3); (十九)十九

20publicvoidtestmethod1_02(21 ) 22thrownewruntimeexception ); 23 }24 }

我们熟悉的RumtimeException类的子类包括

Java.lang.ArithmeticException

Java.lang.ArrayStoreExcetpion

Java.lang.ClassCastException

Java.lang.indexoutofboundsexception

Java.lang.NullPointerException

三.错误

程序发生无法控制的错误时,通常会通知用户,中止程序的执行。 与异常不同,不要抛出Error及其子类中的对象。

Error是throwable的一个子类,用于表示编译时间和系统错误,并指示合理的APP应用程序无法捕获的严重问题。

Error由Java虚拟机生成并抛出。 包括动态链接失败、虚拟机错误等。 程序不处理那个。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。