美文网首页
异常处理

异常处理

作者: 维乾 | 来源:发表于2017-09-15 10:59 被阅读43次

异常处理简介

1.什么是异常处理

异常时程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。

比如说,你的代码少了一个分号,那么运行出来结果是提示错误java.lang.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出java.lang.ArithmeticException的异常。

异常发生的原因有很多,通常包含以下几大类:

用户输入了非法数据。

要打开的文件不存在。

网络通信时连接中断,或者JVM内存溢出。

这些异常有的是因为用户错误引起,有的是程序错误引起的,还有其它一些是因为物理错误引起的。-

要理解Java异常处理是如何工作的,你需要掌握以下三种类型的异常:

检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。

运行时异常:运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。

错误:错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。

切记一点。异常上往上报的,比如一个方法中有异常,那么它是抛出的异常给调用它的方法。

2.为什么需要异常处理

因为一个健壮的程序需要做下图以下判断。可是由于嵌套太if,太复杂。所以所有的面向对象语言都有自己的异常处理。java 把有可能出现的异常放在try的语句块中,通过catch来捕捉不同的异常,来进行不同的处理。

3.异常分为两种

检查性异常和非检查性异常。

4.什么是检查性异常,非检查性异常,运行时异常,非运行时异常?

检查性异常: 不处理编译不能通过

非检查性异常:不处理编译可以通过,如果有抛出直接抛到控制台。

运行时异常: 就是非检查性异常

非运行时异常: 就是检查性异常

1、所有的检查性异常都继承自java.lang.Exception;所有的非检查性异常都继承自java.lang.RuntimeException。

2、检查性异常和非检查性异常最主要的区别在于其处理异常的方式:检查性异常必须使用try catch或者throws等关键字进行处理,否则编译器会报错;非检查性异常一般是程序代码写的不够严谨而导致的问题,可以通过修改代码来规避。

3、常见的运行时异常:空指针异常(NullPointerException)、除零异常(ArithmeticException)、数组越界异常(ArrayIndexOutOfBoundsException)等;

常见的检查性异常:输入输出异常(IOException)、文件不存在异常(FileNotFoundException)、SQL语句异常(SQLException)等。

4.异常处理的两种方式?

第一,通过try/catch处理   

强烈要求用第一种

第二,声明为抛出(声明方法有异常,方法上面的异常声明使用异常的类型来声明)

5.多个异常处理的方式?

try语句块中有多个语句块并且可能会有报多个异常,但只要出现第一个异常,就不会报其他异常。

6.多态异常的处理

捕获和抛出异常都支持多态,但是捕获顺序如果先捕获了父类异常就无法捕获子类异常了,而且第一个捕获是父类异常,这些异常就没有任何机会执行了,所以就报错了。如果先捕获子类异常就不会显示父类的异常。

7.finally是干嘛用的?

finally语句块中的内容不管怎么样都会被执行,所以finally语句一般用来释放资源。有try才能有finally,catch,二者也全有或其一

总结

1.如何在dos中运行java文件

首先找java文件的根目录,在用javac +文件名(.java)生产class 文件。然后 java +文件名(不需要,java)就可以运行了。为什么需要先用javac呢?因为 需要先编译成class文件,JVM虚拟机不能直接运行java文件,只能运行class文件。那么eclipse编译产生的class文件会在哪里呢。一般在bin目录。(http://jingyan.baidu.com/article/8275fc869f6f0c46a03cf61c.html)这个链接的找到class文件的方法。

相关文章

网友评论

      本文标题:异常处理

      本文链接:https://www.haomeiwen.com/subject/enkfsxtx.html