JAVA异常分类和处理解析

前言

如果,某个方法不能按照正常的途径完成任务,就可以通过另一个路径退出方法,在这种情况下会抛出一个封装了错误信息的对象,此时,这个方法会立刻退出且不会返回任何值,调用此方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。

Throwable是JAVA语言中所有错误或异常的超类,下一层分为error或者Exception。

Error:

Error类是指系统的内部错误和资源耗尽的错误,应用程序不会抛出该类对象,如果出现这样的错误,应用程序会尽量让程序安全的终止。

Exception又 有 两 个 分 支 , 一 个 是 运 行 时 异 常 RuntimeException , 一 个 是 检查异常CheckedException。

RuntimeException 如:NullPointerException、ClassCastException;一个是检查异常 CheckedException,如 I/O 错误导致的 IOException、SQLException。 RuntimeException 是 那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。 如果出现RuntimeException,那么一 定是自己的错误。

检查异常 CheckedException:一般是外部错误,这种异常都发生在编译阶段,Java 编译器会强制程序去捕获此类异常,即会出现要求你把这段可能出现异常的程序进行 try catch,该类异常一 般包括几个方面:

1. 试图在文件尾部读取数据;

2. 试图打开一个错误格式的URL;

3. 试图根据给定的字符串查找class对象,而这个字符串表示的类并不存在等等。

处理异常的方式为:

遇到问题不进行处理,继续抛给调用者,抛出异常的方式有三种,一是throw,二是throws,还有一种是系统自动抛异常,

public static void main(String[] args) {
  String s = "abc";
  if(s.equals("abc")) {
   throw new NumberFormatException();
  } else {
   System.out.println(s);
  }
}
int div(int a,int b) throws Exception{
return a/b;}

thr catch捕获异常针对性的处理方式。

Throw和throws的区别:

位置不同

1. throws 用在函数上,后面跟的是异常类,可以跟多个;而 throw 用在函数内,后面跟的 是异常对象。
功能不同:

2. throws 用来声明异常,让调用者只知道该功能可能出现的问题,可以给出预先的处理方 式;throw抛出具体的问题对象,执行到throw,功能就已经结束了,跳转到调用者,并 将具体的问题对象抛给调用者。也就是说 throw 语句独立存在时,下面不要定义其他语 句,因为执行不到。

3. throws 表示出现异常的一种可能性,并不一定会发生这些异常;throw 则是抛出了异常, 执行throw则一定抛出了某种异常对象。

4. 两者都是消极处理异常的方式,只是抛出或者可能抛出异常,但是不会由函数去处理异 常,真正的处理异常由函数的上层调用处理。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 如何利用Retrofit+RxJava实现网络请求的异常处理

    通常情况下我们在与服务器进行通信的时候,不一定就不会出错,有时会出现其他的错误,这个时候我们只要和服务器约定好各种异常,在返回结果处进行判断,到底是执行错误,还是返回正常数据.具体的思路大致就是这样.这里我们定义ExceptionHandle,这里我参考网上的东西,然后稍微做了一些改动. ExceptionHandle public class ExceptionHandle { private static final int UNAUTHORIZED = 401; private stati

  • Java异常分类及统一处理详解

    一.异常分类 java异常分为"检查"和"非检查"两类,"检查"二字的意思是,代码编译时,编译器会去Check一下有没有进行异常处理(捕获或向上抛),对于归类为需要检查的异常,若没处理,编译就过不去.        初学的时候,常常想为啥异常要这样分类处理? 后来明白了些,异常不过两种:主观和客观,一个大多数情况下可以避免,一个大多数情况下无法避免.        像NullPointerException这类异常,大多跟程序员素质挂钩(开发好,

  • Java异常处理操作实例小结

    本文实例讲述了Java异常处理操作.分享给大家供大家参考,具体如下: 一 异常处理的使用--能够捕获到异常 1 代码 public class DealException { public static void main( String[] args ) { try // 检查这个程序块的代码 { int arr[] = new int[5]; arr[10] = 7; // 在这里会出现异常 } catch( ArrayIndexOutOfBoundsException e ) { Syst

  • 在Java8中如何风骚走位的避开空指针异常

    前言 要说 Java 编程中哪个异常是你印象最深刻的,那 NullPointerException 空指针可以说是臭名昭著的.不要说初级程序员会碰到, 即使是中级,专家级程序员稍不留神,就会掉入这个坑里. Null 引用的发明者Tony Hoare 曾在 2009 年作出道歉声明,声明中表示,到目前为止,空指针异常大约给企业已造成数十亿美元的损失. 下面是 Tony Hoare 的原话: 我将 Null 引用的设计称为是一个数十亿美元的错误.1965 那年,我正在用面向对象语言(ALGOL W)

  • Java异常处理 如何跟踪异常的传播路径

    当程序中出现异常时,JVM会依据方法调用顺序依次查找有关的错误处理程序. 可使用printStackTrace 和 getMessage方法了解异常发生的情况: printStackTrace:打印方法调用堆栈. 每个Throwable类的对象都有一个getMessage方法,它返回一个字串,这个字串是在Exception构造函数中传入的,通常让这一字串包含特定异常的相关信息. 示例程序 // UsingExceptions.java // Demonstrating the getMessag

  • JAVA抛出异常的三种形式详解

    一.系统自动抛出异常 当程序语句出现一些逻辑错误.主义错误或者类型转换错误时,系统会自动抛出异常 例一 public static void main(String[] args) { int a = 5; int b = 0; System.out.println( a / b); } 运行结果,系统会自动抛出ArithmeticException异常 Exception in thread "main" java.lang.ArithmeticException: / by zer

  • JAVA异常分类和处理解析

    前言 如果,某个方法不能按照正常的途径完成任务,就可以通过另一个路径退出方法,在这种情况下会抛出一个封装了错误信息的对象,此时,这个方法会立刻退出且不会返回任何值,调用此方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器. Throwable是JAVA语言中所有错误或异常的超类,下一层分为error或者Exception. Error: Error类是指系统的内部错误和资源耗尽的错误,应用程序不会抛出该类对象,如果出现这样的错误,应用程序会尽量让程序安全的终止. Excepti

  • Java异常分类处理抛出捕获操作详解

    目录 什么是异常 1.算术异常 2.数组越界异常 3.空指针异常 异常的分类 异常的抛出(throw关键字) 异常的捕获 throws关键字 try catch关键字 finally关键字 总结 什么是异常 “程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.” 我们在平时写代码的过程中就可能会遇到异常,给大家给举一些容易遇到常见的异常例子: 1.算术异常 Exception in thread “main” java.lang.ArithmeticExcept

  • Java异常体系非正常停止和分类

    目录 一.异常概念 二.异常体系 三.异常分类 四.异常的产生过程解析 一.异常概念 异常,就是不正常的意思.在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是: 异常 :指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止. 在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象.Java处理异常的方式是中断处理. 异常指的并不是语法错误,语法错了,编译不通过,不会产生字节码

  • Java异常继承结构解析_动力节点Java学院整理

    Java异常类层次结构图: 异常的英文单词是exception,字面翻译就是"意外.例外"的意思,也就是非正常情况.事实上,异常本质上是程序上的错误,包括程序逻辑错误和系统错误.比如使用空的引用.数组下标越界.内存溢出错误等,这些都是意外的情况,背离我们程序本身的意图.错误在我们编写程序的过程中会经常发生,包括编译期间和运行期间的错误,在编译期间出现的错误有编译器帮助我们一起修正,然而运行期间的错误便不是编译器力所能及了,并且运行期间的错误往往是难以预料的.假若程序在运行期间出现了错误

  • Java异常基础知识解析

    Java程序运行的非正常现象叫做运行错误,根据其性质可分为两类:错误(Error)和异常(Exception); 他们有一个共同的父类(也是所有异常的顶级父类):Throwable. 异常类结构 Error Error(错误)由JVM生成并抛弃不做处理:此类错误通常与代码和执行的操作无关,是虚拟机中出现了比较严重的问题,程序本身无法解决(常见的错误有死循环.内存泄漏等). 一个常见的错误为Java虚拟机错误(VirtualMachineError),当JVM不再有继续执行操作所需的内存资源时,将

  • Java Web开发入门书籍实例解析(总结一)

    从事Java Web开发这一段时间来,对Java 面向对象的思想和MVC开发模式可以说已经熟悉了.我当前参与的项目使用的框架是Spring.SpringMVC.Hibernate.下面我们小编给大家整理一篇教程帮助大家学习javaweb相关知识,感兴趣的朋友可以参考下. 一.基本概念 1.1.WEB开发的相关知识 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资源分为: 1.静态web资源(如html 页面):指w

  • java 异常详解及应用实例

    java  异常 异常的使用实例(异常分类:Error(是由JVM调用系统底层发生的,只能修改代码) 和 Exception(是JVM发生的,可以进行针对性处理)) 1.如果一个方法内可能出现异常,那么可以将异常通过throw的方式new 出相应的异常类,并在方法上   声明throws可能抛出的异常类抛给调用者,调用者可以进行异常捕获,或者继续抛出异常由 上层调用者继续处理,    如果整个过程都没有将异常进行任何处理,那么将由JVM虚拟机进行默认的处理 2.调用者可以对异常进行try()ca

  • Java数组越界问题实例解析

    Java中数组初始化和OC其实是一样的,分为动态初始化和静态初始化, 动态初始化:指定长度,由系统给出初始化值 静态初始化:给出初始化值,由系统给出长度 在我们使用数组时最容易出现的就是数组越界问题,好了,这里有个简单的例子 int [][] array = {{1,2,3},{1,4}}; System.out.println(array[1][2]); 这是一个二维数组,很明显,数组越界了,控制台中会打印如下信息: Exception in thread "main" java.l

  • java异常与错误处理基本知识

    异常与错误:异常: 在Java中程序的错误主要是语法错误和语义错误,一个程序在编译和运行时出现的错误我们统一称之为异常,它是VM(虚拟机)通知你的一种方式,通过这种方式,VM让你知道,你(开发人员)已经犯了个错误,现在有一个机会来修改它.Java中使用异常类来表示异常,不同的异常类代表了不同的异常.但是在Java中所有的异常都有一个基类,叫做Exception.错误:它指的是一个合理的应用程序不能截获的严重的问题.大多数都是反常的情况.错误是VM的一个故障(虽然它可以是任何系统级的服务).所以,

随机推荐