什么是异常呢:
在现实生活中,总会有一些问题,聚焦在生活上,我们会有工作问题,比如工作不满意,工作薪水低,工作没有发展前景,那么我们会成为这是一个“问题”。
在java的世界中,那么我们相对应的是程序,那么程序也有这样或者那样的问题,那么我们成为“异常”。异常就是程序在运行时出现的不正常现象。
java把异常封装成对象的描述,来高度的概括。
java中Error我们无能为力。我们还是聊聊Exception
Exception的分类:
1.编译时异常 必须进行捕获
2.运行时异常(也就是RuntimeException)
java异常解决方案
class Demo
{
public int division(int a,int b) throws Exception//声明程序可能发生异常,丢给调用者处理
{
return a/b ;
}
}
class ArithmeticExceptionDemo
{
public static void main(String[] args) throws Exception//如果真的发生异常,就给调用者去处理。调用main函数的是java虚拟机,所以是虚拟机
{ //以默认的发生来处理
Demo d=new Demo();
d.division(3,0);
}
}
总结:通过throws Exception的方式丢给调用者处理。
通过try{} catch{}方式来解决
1 class FushuException extendsException2 {3 FushuException(String msg)4 {5 super(msg);6 }7 }8 classDemo9 {10 public int division(int a,intb)11
12 {13
14 try
15 {16 if(b<0)17 throw new FushuException("负数异常"+b);18 }19 catch(FushuException e)20 {21 System.out.println("这是一个负数异常");22 }23
24
25 return a/b ;26
27 }28 }29 classExceptionDemo430 {31 public static voidmain(String[] args)32 {33 Demo d=newDemo();34 int x=d.division(3,-1);35 System.out.println("x="+x);36 System.out.println("over");37 }38 }
总结:自己抛出了异常对象,自己检测和捕获解决
我们也可以这样抛给调用者解决
1 class FushuException extendsException2 {3 FushuException(String msg)4 {5 super(msg);6 }7 }8 classDemo9 {10 public int division(int a,int b) throwsFushuException11
12 {13
14
15
16 if(b<0)17 throw new FushuException("负数异常"+b);18
19
20
21 System.out.println("这是一个负数异常");22
23
24
25 return a/b ;26
27 }28 }29 classExceptionDemo430 {31 public static voidmain(String[] args)32 {33 Demo d=newDemo();34 try
35 {36 int x=d.division(3,-1);37 System.out.println("x="+x);38 }39 catch(FushuException e)40 {41 System.out.println("这是一个负数异常");42 System.out.println(e.toString());43 }44
45 System.out.println("over");46 }47 }
这就是java异常处理的基本法则,你要么抛,要么自己解决,就好像你对待生活中的数学问题一样,你要么跳过去不去想它,要么你自己解决这个问题