黑马程序员 异常处理机制的总结

来源:互联网 发布:网络赚钱 软文写作 编辑:程序博客网 时间:2024/05/04 14:06

异常的总结

异常就是 程序中在运行过程中可能会发生的不正常的现象,异常有很多种还有一个继承体系,最上面的是Throwable,最常用的是Exception和他的子类。

 

异常  

1、异常的概念:

①、就是程序在运行过程中,可能会发生的不正常现象异常有很多种,还有一个继承的体系,最上面的是Throwable,最常用的是Exception和它的子类。

②、Error这个分支的异常在程序中不可以捕获和处理。

Error用于指示合理的应用程序不应该试图捕获的严重问题。这种情况是很大的问题,大到你不能处理了,你不用管它。比如说VirtualMachineError:当 Java 虚拟机崩溃或用尽了它继续操作所需的资源时,抛出该错误。

③、RuntimeException是可以选择不可以进行捕获和处理

 Exception它指出了合理的应用程序想要捕获的条件。Exception又分为两类:一种是CheckedException,一种是UncheckedException。这两种Exception的区别主要是CheckedException需要用try...catch...显示的捕获,而UncheckedException不需要捕获。通常UncheckedException又叫做RuntimeException。《effective java》指出:对于可恢复的条件使用被检查的异常(CheckedException),对于程序错误(言外之意不可恢复,大错已经酿成)使用运行时异常(RuntimeException)。

 

注:常见的异常RuntimeExcepitonIllegalArgumentExceptionIllegalStateExceptionNullPointerExceptionIndexOutOfBoundsException等等。对于那些CheckedException就不胜枚举了,我们在编写程序过程中try...catch...捕捉的异常都是CheckedExceptionio包中的IOException及其子类,这些都是CheckedException

常见异常必须记住:

  ArithmeticException             算术异常(算术中出现)

  ArrayIndexOutofBoundsException  越界异常

  NullpointerException             控指针异常

  classNotFoundException          包名、类名没有导入jar

  NumberFormatException          数字格式化异常

  InputMismatchException           不匹配异常

  OutofmemorymatchException        内存溢出

2、处理异常的方法:

①、trycatchfinally

②、throws声明抛出异常 

    ①格式

try{

需要被测试的代码   

}

catch(异常类型  变量){

异常处理的代码;

}

finally{

一定要执行的语句

}

Age一:

ackage cn.edu.csdn.net;

 class Demo{

int div(int a,int b){

return a/b;

}

}

 public class ExceptionDemo {

 public static void main(String[] args){

 Demo d=new Demo();

 try{

 int x = d.div(4,1);

 System.out.println("x="+x);

 }

 catch(Exception e){

//System.out.println(e.getMessage());     //打印异常名称

 //System.out.println(e.toString()); //打印异常名称、信息

    e.printStackTrace();//打印异常名称、信息、异常出现的位置(jvm默认)

 }

finally{                                      //注:finally块至少执行一次

     System.out.println("over");

 }

 }

 }

Age二:

package cn.edu.csdn.net;

import java.util.*;

public class Test {

public static void main(String[] args) {

// TODO 自动生成方法存根

try{

  Scanner in =new Scanner(System.in);

  System.out.print("请输入被除数:");

      int num=in.nextInt();

  System.out.print("请输入除数: ");

  int num2=in.nextInt();

  System.out.print(num+"÷"+num2+"="+num/num2);

}

catch(Exception e){

  System.out.println("除数不能为零!!");

  e.printStackTrace();

}

finally{

System.out.println("感谢使用本程序!");

}

}

}

注:catch中可以有多个,但有顺序(不要定义多余的catch块),如果多个catch的异常出现继承关系,父类异常catch块放在最下面

finally块至少执行一次;

②格式 throws用在方法声明之后,大括号之前

3、ThrowThrows的区别

①、作用上不同 

     Throw程序员自行产生并抛出的异常

     Throws用于声明该方法内抛出异常

②、使用位置不同

Throw位于方法体内部可以作为单独语句使用

Throws必须跟在方法参数列表的后面,不能单独使用

③、内容不同

  Throw抛出一个异常对象,且只能是一个

   Throws后面跟异常类,且可以跟多个异常类。

  总结:(一句话)后面带S说明可以跟多个类型,后面不带S说明他后面只能跟一个对象

原创粉丝点击