异常概述:
异常是指在程序运行过程中发生的异常事件 , 如I0溢出,数组下标越界,找不到文件等,这些事件发生会导致程序不能正常运行。因此,为了加强程序的健壮性,在进行程序设计时,必须考虑可能发生的异常事件并要做出相应的处理。Java通过面向对象的方法来处理异常/。如果在一个方法的运行过程中发生了异常,则这个方法生成代表该异常的一个对象,并把它交给运行时系统,运行使系统会寻找相应的代码来处理繁盛的异常。我们吧生成异常对象帮把它交给运行时系统这一过程称为抛出(throw)一个异常。
![](https://images2018.cnblogs.com/blog/1479786/201809/1479786-20180913172512406-1477607248.png)
package javaBasics; public class test5 { public static void main(String[] args) { int i = 10; int j = 0; try{ int temp = i/j; //此处会产生异常 System.out.println("计算结果:"+temp); }catch(Exception e){ System.out.println("出现异常:"+e); //打印异常信息 e.printStackTrace(); //打印完整的异常信息 }finally{ System.out.println("不管是否出现异常都执行此代码"); } System.out.println("计算结束"); } }
积极的异常处理方式的捕获顺序 ;
1 public class ExceptionDemo2 {
2 public static void main(String[] args) {
3 String s = "abc";
4 try{
5 s.charAt(5);
6 }catch(StringIndexOutOfBoundsException e){
7 System.out.println("StringIndexOutOfBoundsException");
8 }catch(IndexOutOfBoundsException e){
9 System.out.println("IndexOutOfBoundsException");
10 }catch (Exception e) {
11 System.out.println("Exception");
12 }
13 }
14 }
二 消极的异常处理方式:
public void test() throws Exception{
// 消极的异常处理方式, 表示当前方法一旦发生异常,则自己不做处理,而将异常交给上级方法进行处理.
}
error一般指jvm错误,程序中无法捕获
(拓展:Throwable是Exception的父类,可不可以直接使用Throwable呢?
首先,使用Throwable捕获异常,在代码中是没有任何问题的,但在开发中一般不会使用Throwable处理,因为其有Exception和error两个子类,Error本身不需要程序处理,而程序中需要处理的是Exception 所以没有必要使用Throeable)
四 Throw和Throws关键字(注意:不要在main方法中使用throws,main方法为一切方法的起点,一切的操作也是由主方法开始的,所以,如果在主方法中使用throws,则程序出现问题后肯定交由jvm处理,将会导致程序中断。)
Throw:Throw关键字是人为的抛出异常,直接抛出异常的实例化对象。
package javaBasics; public class test5 { public static void main(String[] args) { try{ throw new Exception("自己抛出异常"); //抛出异常的实例化对象 }catch(Exception e){ e.printStackTrace(); //捕获异常 } } }
Throw和Throws结合应用范例:
以下代码也是开发中使用较多的处理方式
package javaBasics; public class Math { public int div(int i,int j) throws Exception{ int temp = 0; try{ temp = i/j; }catch(Exception e){ //捕获异常 throw e; //把异常交给被调用处处理 }finally{ System.out.println("计算结束"); } return temp; } }
自定义异常:
package javaBasics; public class MyException extends Exception{ //自定义异常类继承Exception类 public MyException(String msg){ //构造方法接受异常信息 super(msg); //调用父类中的构造方法 } } public class test5 { public static void main(String[] args) { try{ throw new MyException("自定义异常信息");//抛出异常 }catch(Exception e){ //异常捕获处理 e.printStackTrace(); } } }
Exception和runtimeException
Exception在程序中必须使用try。。。catch处理。
RuntimeException可以不用try。。。catch处理,产生异常后直接交给JVM处理。(在开发中最好使用try。。。catch进行处理)。