Java异常

什么是异常?

在程序运行过程中,意外发生的情况,背离我们程序本身的意图的表现,都可以理解为异常。

throwable是所有异常的根类,异常分为两种异常exception和error

Error是程序中无法处理的错误,表示应用程序中比较严重的问题,分别有虚拟机错误(VirtualMachineError)内存溢出(OutOfMemoryError)线程死锁(ThreadDeath);

Exception是程序本身可以处理的异常。异常处理通常指针对这种异常的处理。

Exception异常由分为两种:非检查异常和检查异常

非检查异常:RuntimeException  包括空指针异常(NullPointerException)、数组下标越界异常(ArrayIndexOfBoundsException)、算数异常(ArithmeticException)、类型转换异常(ClassCastException)等,这类异常产生频率较高,产生时可以由程序处理或者抛给(throw)jvm处理,例如上面的例子就是抛给了jvm处理,jvm把程序中断执行,并把错误信息输出到终端上。

检查异常:IO异常(IOException)、SQL异常(SQLException)等,此类异常必须由程序员手动处理,否则不通过编译。

如何处理异常?

抛出异常---捕获异常--处理异常

捕获异常:对于运行时异常、错误或可查异常,Java技术所要求的异常处理方式有所不同

通过五个关键字来实现:try、catch、finally、throw、throws

——try-catch-finally

try块捕获异常,catch用于处理try捕获到的异常,finally无关是否捕获到异常处理,异常代码总能执行

语法要求:组合使用,try块后可接零个或多个catch块,如果没有catch块,则必须跟一个finally块

return关键字在异常处理中的使用  作用:终止当前运行

——throw

——throws

可以通过throws声明将要抛出何种类型的异常,通过throw将产生的异常抛出;

如果一个方法可能会出现异常,但没有能力处理这种异常,可以在方法声明处用throws子句来声明抛出异常;

throws语句用在方法定义时声明该方法要抛出的异常类型;当方法抛出异常列表中的异常时,方法将不对这些类型及其子类类型的异常作处理,而调用该方法的方法,由他去处理

——自定义异常

使用Java内置的异常类可以描述在编程出现的大部分异常情况;

也可以通过自定义异常描述特定业务产生的异常类型;

所谓自定义异常,就是定义一个类,去继承Throwable类或者它的子类

——异常链

有时候我们会捕获一个异常后再抛出另一个异常;

顾名思义就是:将异常发生的原因一个串一个串起来,即把底层的异常信息传给上层,这样逐层抛出。

关于方法重写时throws的注意事项

当子类重写父类抛出异常的方法时,声明的异常必须是父类方法所声明的异常的同类或子类;

Java零基础入门之常用工具的更多相关文章

  1. 【JAVA零基础入门系列】Day6 Java字符串

    字符串,是我们最常用的类型,每个用双引号来表示的串都是一个字符串.Java中的字符串是一个预定义的类,跟C++ 一样叫String,而不是Char数组.至于什么叫做类,暂时不做过多介绍,在之后的篇章中 ...

  2. 【JAVA零基础入门系列】Day8 Java的控制流程

    什么是控制流程?简单来说就是控制程序运行逻辑的,因为程序一般而言不会直接一步运行到底,而是需要加上一些判断,一些循环等等.举个栗子,就好比你准备出门买个苹果,把这个过程当成程序的话,可能需要先判断一下 ...

  3. 【JAVA零基础入门系列】Day12 Java类的简单应用

    俗话说的好,实践出真知,所以除了理论知识掌握扎实以外,更重要的是要多加操练,这样才能掌握核心科技. 今天我们就用刚学会的类来实践一下,目标便是完成上一篇中的剁手任务. 我们的商品类已经准备好了,代码重 ...

  4. 【JAVA零基础入门系列】Day7 Java输入与输出

    [JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day ...

  5. 【JAVA零基础入门系列】Day2 Java集成开发环境IDEA

    开发环境搭建好之后,还需要一个集成开发环境也就是IDE来进行编程.这里推荐的IDE是IDEA,那个老掉牙的Eclipse还是先放一边吧,(手动滑稽). IDEA的下载地址:http://www.jet ...

  6. 【JAVA零基础入门系列】Day4 变量与常量

    这一篇主要讲解Java中的变量,什么是变量,变量的作用以及如何声明,使用变量. 那么什么是变量?对于初学者而言,可以将变量理解为盒子,这些盒子可以用来存放数据,不同类型的数据需要放在对应类型的盒子里. ...

  7. 【JAVA零基础入门系列】Day5 Java中的运算符

    运算符,顾名思义就是用于运算的符号,比如最简单的+-*/,这些运算符可以用来进行数学运算,举个最简单的栗子: 已知长方形的长为3cm,高为4cm,求长方形的面积. 好,我们先新建一个项目,命名为Rec ...

  8. 【JAVA零基础入门系列】Day9 Java中的那个大数值

    什么是大数值?用脚趾头想也知道,当然是"大"的数值(233).Java中有两个用于表示大数值的类,BigInteger和BigDecimal,那到底能表示多大的数值呢?理论上,可以 ...

  9. 【JAVA零基础入门系列】Day10 Java中的数组

    什么是数组?顾名思义,就是数据的组合,把一些相同类型的数放到一组里去. 那为什么要用数组呢?比如需要统计全班同学的成绩的时候,如果给班上50个同学的成绩信息都命名一个变量进行存储,显然不方便,而且在做 ...

随机推荐

  1. centos7.x 将普通用户加入sudoers中,获取sudo执行权限

    centos7.x 将普通用户加入sudoers中,获取sudo执行权限 0 问题由来   你在提起兴致学习的时候,兴冲冲地往黑洞洞的文本窗口输入下一行: [pan@localhost ~]$ sud ...

  2. C#使用GUID作为随机数种子

    使用C#默认的Random无参构造的next生成的随机数,在快速生成随机数的时候,会出现大批量的重复.使用guid作为随机数种子,效果会好很多 Guid temp = Guid.NewGuid(); ...

  3. Android OkHttp + Retrofit 取消请求的方法

    本文链接 前言 在某一个界面,用户发起了一个网络请求,因为某种原因用户在网络请求完成前离开了当前界面,比较好的做法是取消这个网络请求.对于OkHttp来说,具体是调用Call的cancel方法. 如何 ...

  4. [ZJOI2006]物流运输trans

    Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格 ...

  5. 【DP合集】tree-knapsack

    Description 给出一个 N 个节点的有根树,点编号 1 ∼ N ,编号为 i 的点有权值 v i .请选出一个包含树根的,点数 不超过 K 的连通块,使得点权和最大. Input 输入的第一 ...

  6. Oracle VM VirtualBOX桥接网卡

    1.在VirtualBOX设置中的网络菜单,连接方式选择桥接网卡 2.启动系统,设置静态IP sudo vim /etc/network/interfaces auto enp0s3         ...

  7. Spring Security 动态url权限控制(三)

    一.前言 本篇文章将讲述Spring Security 动态分配url权限,未登录权限控制,登录过后根据登录用户角色授予访问url权限 基本环境 spring-boot 2.1.8 mybatis-p ...

  8. C++ 利用template给函数中的变量赋初值

    #include <iostream> template<int base> void echo(int add) { int sum=add+base; std::cout& ...

  9. Java项目部署与远程调试两三事

    [开启和进行远程调试]参考https://blog.csdn.net/WSYW126/article/details/748536801.tomcat:配置catalina.sh jpda参数,主要是 ...

  10. C# 结合 Golang 开发

    1. 实现方式与语法形式 基本方式:将 Go 程序编译成 DLL 供 C# 调用. 1.1 Go代码 注意:代码中 export 的注释是定义的入口描述不能省略 package main import ...