对检查性异常和非检查性异常的理解

从开始学习Java,就学习了异常处理,知道异常分为检查性异常和非检查性异常,RuntimeException属于非检查性异常,知道异常的分类。但工作之前没有很多的实际应用,知识书本上课件上的定义,对两种异常的理解并不是很清楚。工作后在实际代码中,逐渐捋顺清楚了,这里记录一下,基础知识就不说了,书上课件上网上资料很丰富,这里只总结对两种异常的理解。

1、检查性异常: JAVA编译器强制要求用try{}catch(){}块进行处理,如果不处理则必须在包含可能发生异常的代码的方法上用throws显示地抛出异常,由调用该方法的方法catch捕捉处理异常,否则程序编译不会通过,会有红叉提示。

如:

这里必须要用try  catch块将代码包围起来或者throws显式 抛出异常,否则编译不会通过。

2、非检查性异常:JAVA编译器可以通过的异常,可以用try{}catch(){}进行处理,处理过后程序可以继续向下执行,也可以不处理,由调用它的方法进行处理。当然,也可以一直不处理,到了最上层,多线程的话线程会终止,单线程的话主程序会终止,也就是说运行时异常如果一直不进行处理,则会起到使程序停止的作用。

如:

这里虽然抛出了异常,但只是阻止程序继续运行,并不会编译报错,无需在方法上用throws语句显式抛出异常。

时间: 2024-08-10 02:10:52

对检查性异常和非检查性异常的理解的相关文章

检查型异常和非检查型异常

对于因为编程错误而导致的异常,或者是不能期望程序捕获的异常(解除引用一个空指针,数组越界,除零,等等),为了使开发人员免于处理这些异常,一些异常被命名为非检查型异常(即那些继承自 RuntimeException 的异常)并且不需要进行声明. Checked Exception和Unchecked Exception的几点不同之处 方法签名是否需要声明exception 调用该方法时是否需要捕获exception exception产生的时候JVM控制程序的状态 Sun 的"The JavaTu

【Java】检查型异常和非检查型异常

检查型异常(CheckedException)在Java中所有不是RuntimeException派生的Exception都是检查型异常.当函数中存在抛出检查型异常的操作时该函数的函数声明中必须包含throws语句.调用改函数的函数也必须对该异常进行处理,如不进行处理则必须在调用函数上声明throws语句. 检查型异常是JAVA首创的,在编译期对异常的处理有强制性的要求.在JDK代码中大量的异常属于检查型异常,包括IOException,SQLException等等. 非检查型异常(Unchec

Java运行时异常和非运行时异常

1.Java异常机制 Java把异常当做对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类.Java中的异常分为两大类:错误Error和异常Exception,Java异常体系结构如下图所示: 图片来源:http://blog.csdn.net/wuwenxiang91322/article/details/10346337 2.Throwable Throwable类是所有异常或错误的超类,它有两个子类:Error和Exception,分别表示错误和异常.其中异

java 检查异常 和 非检查异常

个人见解 ,如果有问题 ,还希望大神们 指正 1. 非检查异常 又称运行时 异常 ,所有 继承自 RuntimeException 的异常都是 非检查异常  ,, 如果你不处理  会有 虚拟机 main  方法处理 2. 凡是 不继承自 RuntimeException 的异常都是 检查异常 (如 IO 异常) 3. 上层调用者必须对  检查 异常 做处理 : try_catch  或者 继续 throws 给上层处理 4.  为什么要有检查异常: 通常情况下 ,检查异常 并不是你的程序写的有问

Java检查型异常和非检查型异常

1.代码 public class ExcepTest { /** * @param args */ public static void main(String[] args) { System.err.println("111111111111"); // say(); //抛出异常,但是代码不显示的try..catch.. // calc(); //抛出异常,但是代码不显示的try..catch.. // try { // show(); // } catch (Exceptio

运行时异常和非运行时异常

RunntimeException的子类: ClassCastException 多态中,可以使用Instanceof 判断,进行规避 ArithmeticException 进行if判断,如果除数为0,进行return NullPointerException 进行if判断,是否为null ArrayIndexOutOfBoundsException 使用数组length属性,避免越界 这些异常时可以通过程序员的良好编程习惯进行避免的 1:遇到运行时异常无需进行处理,直接找到出现问题的代码,进

运行时异常和非运行是异常

Throwable是所有Java程序中错误处理的父类,有两种资类:Error和Exception. Error:表示由JVM所侦测到的无法预期的错误,由于这是属于JVM层次的严重错误,导致JVM无法继续执行,因此,这是不可捕捉到的,无法采取任何恢复的操作,顶多只能显示错误信息. Exception:表示可恢复的例外,这是可捕捉到的. Java提供了两类主要的异常:runtime exception和checked exception.checked 异常也就是我们经常遇到的IO异常,以及SQL异

Java:检查异常与未检查异常

一.异常的介绍 Throwable 是 Java 中所有错误和异常的超类.Java 虚拟机仅抛出属于此类(或其子类之一)的实例对象,或者是 throw 语句也可以抛出该对象.同样,catch 子句中的参数类型也只能是此类(或其子类之一).处于编译时检查异常为目的,Throwable 和其部分子类(除开 RuntimeException.Error 及它们其子类)都被视为检查的异常(checked exceptions),又称为运行时的异常,剩下的都是未检查的异常(unchecked except

爪哇国新游记之十九----使用Stack检查数字表达式中括号的匹配性

/** * 辅助类 * 用于记载字符和位置 * */ class CharPos{ char c; int pos; public CharPos(char c,int pos){ this.c=c; this.pos=pos; } } /** * 括号检查类 * */ public class BracketChecker{ /** * 检查函数 * @param str * @return * @throws Exception */ public static boolean check(