异常的概念和处理流程

1.异常概念

异常就是程序中发生由于硬件设备问题、软件设计错误等导致程序异常事件,比如整数除0溢出、数组下标越界、指定数组长度为负、文件找不到等,这些事件的发生将阻止程序的正常运行。为了加强程序的健壮性,程序设计时,必须考虑到可能发生的异常事件并做出相应的处理。

2.异常种类:

A:Java中的异常类定义了程序中遇到的轻微的错误条件。(Exception)

B:Error 是 Throwable 的子类,用于指示合理的应用程序不应该试图捕获的严重问题。因此大多数应用程序都不应该试图捕获它。因为这些错误可能是再也不会发生的异常条件。

C: 每个JAVA程序运行时系统都会自动引入java.lang包,故无需使用import语句导入它

3.异常捕捉格式:

    try{

     //可能产生异常的代码段

     }catch(异常类型1 e){

      //处理异常

     }catch(异常类型2 e){

       //处理异常

     } finally{

     //无论有无异常都将执行的代码(任何情况都会执行)

    }

可能产生的异常代码段的示例:

运行期异常:

//ArithmeticException

int i = 10 / 0;

int i2 = Integer.parseInt("a");

int[] array = [1,2,3];

array[10]

String str = null;

str.subString(0);

//非运行期异常

new FileInputStream(new File("随便写一个不存在的文件"));

//ParseException

new SimpleDateFormat("yyyy-MM-dd hh:mm:ss SSS").parse("2018-03-20 05:29:23 133");

3.1.一个try语句可以跟多个catch语句。

3.2.catch异常时,先捕捉子类异常,再捕捉父类异常。否则会编译无法通过,报无法到达的捕捉块错误。

3.3.try,catch,finally必须紧跟,中间不能写除了注释之外的任何代码。

3.4.catch不能和finally同时省略。

4.throw和throws

throws :

4.1.throws(声明方法体会抛出哪些异常),用于声明方法体所抛出的异常,作用在方法上面。

4.2.throws子句中同时可以指明多个异常,之间用逗号隔开。

4.3.如果声明了要抛出的异常,则本方法可以不处理,而由调用者处理。

4.4.throws在向上抛的时候,可以向上抛抽象的异常(异常子类的父类)。

4.5.若代码显式向上throw 异常时,则必须显式声明throws异常。

4.6. throws和throw的区别

throws(声明方法体会抛出哪些异常),用于声明方法体所抛出的异常,作用在方法上面。

抛出异常(throw),用于向上抛异常,作用在catch语句当中。

5.try cath工作流程:

5.1.程序正常执行,没有抛出异常的情况下catch语句块是不工作的。

5.2.若程序抛出异常,立即中止执行。

5.3.若捕捉了此异常,则执行catch当中的语句,catch语句执行完成,恢复执行,但仅向catch块后面顺序执行。

5.4.若没有catch语句块捕获此异常,则异常沿着方法的调用栈一直向上传播。如果传播过程中一直没有catch语句块捕获,最终由main方法抛出,由JAVA运行时环境(JRE)来处理。

5.5.若捕捉了异常,却再次抛出。同第4条。

6.finally:

从try catch流程能看出,一旦异常抛出,其后面的代码都不再执行,而是进入了异常处理程序,如果没有异常处理程序,异常沿着方法的调用栈一直向上传播,在某些情况下不能满足需求。例如:打开了一个资源,无论如何都要释放掉。否则占用资源(文件,数据库),其它程序将不能使用。更有甚者有可能引起整个系统的崩溃,例如更新系统,更新到一半抛出异常之后,未经还原就直接退出完成,客户欲哭无泪。

finally可以保证离开try-catch语句之前执行,将打开的资源释放掉(即使是有return也会在return之前执行)。但也有几种特殊情况可能会中断finally语句的执行,例如:

1.finally块当中的语句本身产生了异常。

2.执行finally语句块的线程死亡。

3.在finally语句块中执行了System.exit(0);

4.计算机掉电。

7.方法重写对抛出异常声明的约束

  声明抛出异常如同访问修饰符一样,也是方法声明的组成部分,所以方法的重写对异常的抛出也有限制。如果方法被重写,要求重写后的方法一定不能声明抛出新的捕获异常,或比原方法范畴更广的异常。

  根据替代性原则,子类对象要能够替代父类对象。当调用父类方法时不需要处理的异常,在调用子类中同样的方法时就要处理,这就无法替代了。

异常流程图

1.Throwable 类是 Java 语言中所有错误或异常的超类。

2.只有当对象是此类(或其子类之一)的实例时,才能抛出。

3.只有当对象是此类(或其子类之一)的实例时,才可以是 catch 子句中的参数类型。

Error 用于指示合理的应用程序不应该试图捕获的严重问题。因此大多数应用程序都不应该试图捕获它。因为这些错误可能是再也不会发生的异常条件。

无需在其 throws 子句中声明可能抛出但是未能捕获的 Error。

Exception 指出了合理的应用程序想要捕获的条件。

如果方法没声明throws 异常,那么它必须在方法体内被捕获(RuntimeException 除外)。

RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。

可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 异常处理是程序设计中的一种技术,它是指在程序运行过程中出现错误时,程序能够自动或者人工地捕获、处理和恢复错误,以保证程序正常运行。异常处理可以在程序中设置一些代码来处理可能出现的错误,一旦出现错误,程序会自动跳转到相应的处理代码中,以避免程序崩溃或者产生其他的错误。 异常处理的作用包括以下几点: 1. 提高程序的鲁棒性:在程序中设置异常处理代码可以使程序更加健壮,能够应对各种异常情况,避免程序崩溃或者产生错误。 2. 提高程序的可读性:异常处理可以使程序在出现错误时给出明确的提示信息,方便程序员进行调试和修复。 3. 提高程序的可维护性:异常处理可以将程序的错误处理逻辑集中管理,方便程序员对程序进行维护和扩展。 4. 提高用户体验:异常处理可以让用户在使用程序时避免看到一些不友好的错误提示,提高用户的体验感。 ### 回答2: 异常处理是编程中的一种机制,用于处理程序执行过程中出现的错误、异常或意外情况。它的主要作用是保证程序在运行过程中不会因为异常而崩溃,能够进行适当的处理并恢复正常的运行状态。 异常处理概念是基于错误处理的实践而发展起来的,它可以捕获程序运行过程中可能出现的异常情况,并通过一系列的处理机制来处理这些异常,从而保证程序的正常执行。 异常处理的作用主要体现在以下几个方面: 1. 防止程序崩溃:当程序出现异常时,如果没有进行适当的处理,可能会导致程序崩溃。异常处理机制可以捕获异常,防止程序因异常而崩溃,从而提高程序的稳定性和可靠性。 2. 提供错误信息:异常处理可以捕获异常并提供相应的错误信息,方便程序员了解程序执行过程中的问题和错误原因,便于调试和修复异常。 3. 保证程序流程正常:异常处理可以在程序出现异常时进行相应的处理,例如回滚事务、关闭资源等,确保程序的流程能够恢复到正常状态,避免因异常而导致数据丢失或其他不可预料的后果。 4. 提高代码可读性和可维护性:通过异常处理,可以将异常相关的代码从正常逻辑中分离出来,使得程序的逻辑更加清晰和简洁。异常处理还可以使得代码更易于维护和修改,提高代码的可读性和可维护性。 综上所述,异常处理是一种重要的编程机制,通过适当的处理和管理异常,可以保证程序的正常运行,提高程序的稳定性和可靠性,同时也便于程序员定位和解决问题。 ### 回答3: 异常处理是一种针对程序运行时出现不可预料情况的处理机制。在程序执行过程中,可能会发生各种意外状况,如输入错误、网络连接中断等,这些情况可能导致程序崩溃或产生错误结果。异常处理的作用就是帮助程序在遇到异常情况时,能够进行适当的处理,确保程序的稳定性和可靠性。 异常处理概念就是在程序中设立异常处理机制,捕获并处理可能发生的异常。通过使用异常处理机制,程序能够在出现异常时执行特定的处理代码,将错误的执行路径转移到合适的位置,避免程序崩溃或产生错误结果。 异常处理的作用主要有以下几个方面: 1. 提高程序的可靠性:通过处理异常,避免程序崩溃或产生错误结果,确保程序能够正常执行,并提供友好的用户体验。 2. 简化调试过程:当程序遇到异常时,异常处理机制会提供详细的错误信息,方便程序员定位和修复错误,简化调试过程。 3. 异常反馈和日志记录:异常处理机制可以记录异常信息,帮助开发人员分析程序发生异常的原因,从而改进程序设计和修复潜在的问题。 4. 保护资源和数据完整性:异常处理可以保护程序中的关键资源和数据不受损坏,从而保证数据的完整性和安全性。 5. 优化用户体验:通过合理的异常处理,程序能够给出友好的提示信息,提高用户体验,减少用户的困扰和不便。 总之,异常处理作为程序设计中的重要机制,可以提高程序的可靠性和稳定性,简化调试过程,保护数据的完整性和安全性,改善用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

煎饼果子不加盐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值