当前位置: 代码迷 >> 综合 >> 什么是异常?
  详细解决方案

什么是异常?

热度:46   发布时间:2024-01-30 14:26:50.0

这篇博客决定写一些异常相关的理论问题和个人理解。

什么叫异常?

学到异常我们肯定要问自己这个问题,异常就是程序中不正常的现象。异常包括error和exception两种。第一种error是程序员不能处理的异常。第二种是可以通过程序员处理代码解决的异常。它包括编译异常和运行异常。编译异常是指在编译过程中,会出现提示的异常。运行异常是指在运行时出现的异常,并将异常信息反馈控制台。

 

那么异常有哪些处理方式呢?

  1. 自己处理(负责)。try_catch捕获异常后,根据程序设定的可能出现异常的位置,执行相应代码。
  2. 抛出异常(不负责)。Throw,抛出异常给调用的人处理。

 

在异常处理时的注意事项?

1.运行时异常被抛出可以不处理,因为JVM会处理

2.如果父类抛出了异常,子类在覆盖父类方法的过程中,只能进行3种选择:(1)不抛出任何异常(2)抛出和父类一样的异常(3)抛出父类异常的子类异常

 

Throw和throws的区别:

1.虽然二者均为异常处理的关键字,但是throws用于声明异常,throw用于抛出异常。

2.try中包括的是可能出现异常的代码,异常可能是0个到n个,但是能被catch捕获到的异常只有一个。Throw可能抛出多少个异常,Throws就必须定义多少个异常。

 

Try-catch-finally运行流程:

try表示为可能出现异常的区域,如果出现异常就进入catch相应的异常处理的内容,反之不进入,但是如果有finally的话,不管是不是存在异常,一定运行finally部分内容。需要注意的是,虽然一个try中可以定义多个catch,每个catch中也都是各自不同的异常对象,但是,如果catch中的异常对象具有继承关系,子类异常对象参数必须在父类异常对象参数上面(避免出现向上转型错误的问题)。

 

Try-catch-finally使用方式?

一个异常获取必须包含一个try(可以不包括catch或者不包括finally,但是二者必须选择一个和try使用),但是try关键字不能单个使用,一个try可以连接多个catch,但是最多只连接一个finally。

 

Throwable类中常用的方法?

1.String getMessage(),返回异常信息

2.void printStackTrace(),将异常信息红色字体打印在控制台(包括包名类名、异常名称和异常原因)

3.String toString(),使用简短的字符串描述错误

 

如何自定义异常类?

  1. 首先创建一个类,并让它继承Exception或者Exception子类,若想创建运行时异常可以继承RuntimeException。
  2. 然后定义两个构造器,一个无参,一个有参,用super分别调用其父类有参和无参的构造器,有参构造器的参数列表使用用于输出错误信息的String变量message。

 

Try-catch和return配合该怎么运行?

  1. try-catch块在return之后,则出现编译异常。
  2. 如果return在try-catch中,程序会按顺序执行,就算执行到return也不会停止,会执行完finally里面的最后一句语句,然后返回执行return语句。(return在try-catch中它不会执行finally括号以外的任何语句)
  相关解决方案