首页 > 其他分享 >异常

异常

时间:2023-03-24 22:35:53浏览次数:28  
标签:Exception 代码 try 编译 catch 异常

一、异常体系介绍

异常的最大一个类为java.lang.Throwable,其有两个子类,分别为Error和Exception。

Error:代表的系统级别错误(属于严重问题)系统一旦出现问题,sun公司会把这些错误封装成Error对象。Error是给Sun公司自己用的,不是给我们程序员用的。因此我们开发人员不用管它。

Exception:叫做异常,代表程序可能出现的问题。通常用Exception以及他的子类来封装程序出现的问题。

 

总结:

 

 二、编译时异常和运行时异常

编译时异常:在编译阶段,必须要手动处理,否则代码报错。如日期解析异常。作用在于提醒程序员。

运行时异常:在编译阶段不需要处理,是在代码运行过程中出现的异常。如数组索引越界异常。一般是由于参数传递错误带来的问题。

Java—Javac命令—>字节码文件—Java命令—>运行结果

Java—Javac命令—>字节码文件:该过程中出现的异常为编译异常。

 字节码文件—Java命令—>运行结果:该过程中出现的异常为运行时异常。

 

三、异常作用

作用一:用来查询bug的关键参考信息

作用二:可以作为方法内部的一种特殊返回值,以便通知调用者底层的执行情况

看异常的位置:从下往上看

 

四、异常的处理方式

(1)JVM默认的处理方式

把异常的名称,异常原因及异常出现的位置等信息输出在控制台;

程序停止执行,下面的代码就不会执行了。

(2)自己处理(捕获异常)

格式:

try{

可能出现异常的代码;

}catch(异常类名 变量名){

异常的处理代码;

}

目标:当代码出现异常时,可以让程序继续往下执行。

处理过程:

e.g.

若出现的异常为数组索引越界异常,则程序就会创建一个ArrayIndexOutOfBoundsException对象;

new ArrayIndexOutOfBoundsException();

拿着这个对象到catch的小括号中比对,看括号中的变量是否可以接受这个对象

如果能被接收,就表示该异常被捕获,执行catch里面对应的代码

当catch里面所有的代码执行完毕,继续执行try...catch体系下面的其他代码

注意:

1、如果要捕获多个异常,这些异常中如果存在父子关系的话,那么父类一定要写在下面

在JDK7之后,我们可以在catch中同时捕获多个异常,中间用|进行隔开,表示如果出现了A异常或者B异常的话,采取同一种处理方案。

例如:

catch(ArrayIndexOutOfBoundsException|ArithmeticException e)

2、如果try中遇到的问题没有被捕获,相当于try...catch白写了,最终还是会交给虚拟机进行处理。

3、如果try中遇到了问题,下面的代码就不会执行了,直接跳转到对应的catch当中,执行catch里面的语句体,但是如果没有对应catch与之匹配,那么还是会交给虚拟机进行处理。

 

Throwable的成员方法

 

其中:printStackTrace()用的最多,在底层是利用System.err.println进行输出,把异常的信息以红色字体输出在控制台。

这三个方法都仅仅是打印信息,不会停止程序运行。 

tips:生成try...catch的快捷键:

先选中代码,然后ctrl+alt+t,然后选try/catch

(3)抛出异常(即交给调用者处理)

 

 四、自定义异常

步骤:

(1)定义异常类

类名:

当前异常的名字+Exception

(2)写继承关系

运行时异常:继承RuntimeException

编译时异常:继承Exception (核心:提醒程序员检查本地信息)

(3)空参构造

(4)带参构造

意义:就是为了让控制台的报错信息更加的见名知意

 

标签:Exception,代码,try,编译,catch,异常
From: https://www.cnblogs.com/qiqi-yi/p/17253537.html

相关文章

  • DolphinDB 流计算应用:引擎级联监测门禁异常状态
    物联网的发展为智能安防和自动化监控带来了更多便利,与此同时,新型城镇建设、智慧城市与智慧社区的发展也为门禁管理等安防问题智能化提出了更高的要求。在智能化发展的背景下......
  • SpringBoot中定义全局异常处理器
    场景SpringBoot中创建全局异常处理器,使发生异常时能处理。实现在项目下新建handler包,在包下新建GlobalExceptionHnadler.javapackagecom.example.demo.handler;importja......
  • sql预编译参数设置为null导致空指针异常
    编写的公共查询方法  在Dao层调用我们的公共查询方法并将params设置为了null  报错空指针异常  解决方法:将params设置为一个空的数组 ......
  • Laravel 异常错误信息处理
    手动抛出错误try{ $num1=3; if($num1==3){ thrownew\Exception("自定义错误"); }}catch(\Exception$exception){ info($exception->getMessage());}日......
  • SSM整合——项目异常处理
    项目异常处理项目异常分类业务异常不规范的用户行为产生的异常  规范的用户行为产生的异常  系统异常项目运行过程中可预计且无法避免的异常  其他......
  • 异常
    异常一、什么是异常程序在运行过程当中发生的问题packagecom.mine.demo01;publicclassMain1{publicstaticvoidmain(String[]args){System.o......
  • split切割需要转义的字符遇到的异常(ArrayIndexOutOfBoundsException)
    过程:在对一个字符串按字符"."进行切割时,出现了ArrayIndexOutOfBoundsException原因:因为在字符串中有特殊符号 ( 和 ),所以在切割的时候根本匹配不成功,数组长......
  • Asp.net Core 全局异常处理
    中间件方式建立中间件处理类Startup.cs中注册任何Controller中的Action抛出异常均可被捕捉在项目根目录下自建目录Middleware新建中间件类ErrorHandlerMiddleware......
  • MinIO上传文件The difference between the request time and the server's time is to
    问题向MinIO上传文件时,抛出异常:Thedifferencebetweentherequesttimeandtheserver‘stimeistoolarge.使用date命令修改CentOS时间后,异常依然存在。相关Linux......
  • golang 异常捕获和处理(panic/recover)
    1.异常处理Golang没有结构化异常,使用panic抛出错误,recover捕获错误。异常的使用场景简单描述:Go中可以抛出一个panic的异常,然后在defer中通过recover捕获这个异常,然后......