什么叫异常(Exception):在程序运行过程中出现的错误
再看一张图
异常的分类
异常主要分为:错误、一般性异常(受控异常)、运行期异常(非受控异常)
1)错误:如果应用程序出现了Error,那么将无法恢复,只能重新启动应用程序,最典型的Error的异常是:OutOfMemoryError(内存溢出)
2)受控异常:出现了这种异常必须显示的处理,不显示处理java程序将无法编译通过
3)非受控异常:此种异常可以不用显示的处理,例如被0除异常,java没有要求我们一定要处理
.如何处理异常?
第一种处理方式
异常的捕获和处理需要采用try和catch来处理,具体格式如下:
try {
//包含了可能产生异常的代码
}catch(OneException e) {
//处理的方式1
}catch(TwoException e) {
//处理的方式2
}finally {//finally可要可不要
//一定要执行的代码
}
第二种处理方式
public void haha() throws Exception1 e1,Exception2 e2{
//可能出现异常(尤其是编译时异常,一定要处理)
//这里的意思是指将可能出现的异常交给上层去处理,不用自己处理
}
第三种处理方式(自己手动抛出异常+自己定义一个异常)
/**定义一个自定义异常类继承Exception
* 并写一个构造函数
*/
public class TestException extends Exception{
public TestException(String string) {
System.out.println(string);;}
}
import java.util.Scanner;
/**
*定义一个简单的测试类,如果输入的除数为0就抛出你“除数不能为0!” 其实系统会自己检查抛出异常的,我们这里仅仅为了举例说明如何自定义异常及抛出来
*/
public class Test {
public static void main(String[] args) throws Exception {
int i = 0;
int x = 0;
Scanner input = new Scanner(System.in);
i=input.nextInt();
x=input.nextInt();
double y;
if (i==0) {
throw new TestException("除数不能为0!!");//抛出自己定义的异常
}
y=x/i;
System.out.println(y);
}
}
显示结果
0
5
除数不能为0!!
Exception in thread "main" TestException
at Test.main(Test.java:12)
注释::如果我们是用eclipse作为我们IDE的话 ,系统会自己检查异常的我们会只需要按照系统的提示,抛出相应的异常就行了,但我们要明白异常的体系结构和为什么会抛出异常。。。。。。