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

RunntimeException的子类:

ClassCastException

多态中,可以使用Instanceof 判断,进行规避

ArithmeticException

进行if判断,如果除数为0,进行return

NullPointerException

进行if判断,是否为null

ArrayIndexOutOfBoundsException

使用数组length属性,避免越界

这些异常时可以通过程序员的良好编程习惯进行避免的

1:遇到运行时异常无需进行处理,直接找到出现问题的代码,进行规避。

2:就像人上火一样牙疼一样,找到原因,自行解决即可

3:该种异常编译器不会检查程序员是否处理该异常

4:如果是运行时异常,那么没有必要在函数上进行声明。

6:案例

1:除法运算功能(div(int x,int y))

2:if判断如果除数为0,throw new ArithmeticException();

3:函数声明throws ArithmeticException

4:main方法调用div,不进行处理

5:编译通过,运行正常

6:如果除数为0,报异常,程序停止。

7:如果是运行时异常,那么没有必要在函数上进行声明。

1:Object类中的wait()方法,内部throw了2个异常 IllegalMonitorStateException InterruptedException

1:只声明了一个(throws) IllegalMonitorStateException是运行是异常没有声明。


class Demo12 {

public static void main(String[] args){

div(2, 1);

}

public static void div(int x, int y) {

if (y == 0) {

throw new ArithmeticException();

}

System.out.println(x / y);

}

}

4:Sun 的API文档中的函数上声明异常,那么该异常是非运行是异常,

调用者必须处理。

5:自定义异常一般情况下声明为非运行时异常

3:总结

1:子类覆盖父类方法是,父类方法抛出异常,子类的覆盖方法可以不抛

出异常,或者抛出父类方法的异常,或者该父类方法异常的子类。

2:父类方法抛出了多个异常,子类覆盖方法时,只能抛出父类异常的子

3:父类没有抛出异常子类不可抛出异常

1:子类发生非运行时异常,需要进行try{}catch的(){}处理,不能

抛出。

4:子类不能比父类抛出更多的异常

时间: 2024-10-19 03:51:49

运行时异常和非运行时异常的相关文章

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

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

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

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

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

从开始学习Java,就学习了异常处理,知道异常分为检查性异常和非检查性异常,RuntimeException属于非检查性异常,知道异常的分类.但工作之前没有很多的实际应用,知识书本上课件上的定义,对两种异常的理解并不是很清楚.工作后在实际代码中,逐渐捋顺清楚了,这里记录一下,基础知识就不说了,书上课件上网上资料很丰富,这里只总结对两种异常的理解. 1.检查性异常: JAVA编译器强制要求用try{}catch(){}块进行处理,如果不处理则必须在包含可能发生异常的代码的方法上用throws显示地

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

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

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

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

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

在ASP.NET MVC中使用NuGet添加SignalR类库之后,再次运行程序时,它出现了一个异常:

自从在ASP.NET MVC中使用NuGet添加SignalR类库之后,再次运行程序时,它出现了一个异常: Server Error in '/' Application. The following errors occurred while attempting to load the app.- No assembly found containing an OwinStartupAttribute.- No assembly found containing a Startup or [

解决异常:公共语言运行时检测到无效的程序

我碰到这个问题比较奇怪,在开发OrayTalk的组织结构功能时,其中的一个方法(基于.NET 2.0)在win7.win2003下运行没有问题,在winxp下运行就抛异常:“公共语言运行时检测到无效的程序”,对应英文为:common language runtime detected an invalid program. 抛异常的方法代码摘抄如下: private Control control = ...; public void ActionOnUI<T1>(bool showMessa

c/c++编译时,指定程序运行时查找的动态链接库路径

http://blog.csdn.net/tsxw24/article/details/10220735 c/c++编译时,指定程序运行时查找的动态链接库路径 分类: c/c++ linux 2013-08-23 14:04 1117人阅读 评论(0) 收藏 举报 [plain] view plaincopy $ g++ -Wl,-rpath,/usr/local/lib/ -oevh libevent_http.cpp -levent -Wl,-rpath,  用于指定程序运行时查找动态链接库