首页 > 代码库 > java异常
java异常
import java.util.Scanner; public class Exc{ public static void main(String[] args){ Scanner input=new Scanner(System.in); System.out.println("Enter two integers:"); int number1=input.nextInt(); int number2=input.nextInt(); //程序包含的是一个try块和catch块。try块包含的是正常情况下执行的代码。 //catch块包含的是number2为0时执行的代码。在这种情况下,程序会通过执行下面的语句来抛出一个异常。 try{ if(number2==0) throw new ArithmeticException("D2ivisor cannot b zero"); System.out.println(number1+" / "+number2+" is "+(number1/number2)); } //new ArithmeticException("D2ivisor cannot b zero");称为一个异常 //异常时从一个异常类创建的对象。在这种情况下,异常类就是java.lang.ArithmeticException catch(ArithmeticException ex){ System.out.println("Exception:an integer cannot be divided by zero"); } System.out.println("Execution continues..."); } } /** 当异常被抛出时,正常的流程就被中断。抛出异常就是将异常从一个地方传递到另一个地方。异常被catch块捕获。执行 catch块中的代码以处理这个异常。然后,执行catch块后的语句。 throw类似于方法的调用,不同于调用块,它调用的是catch块。从某种意义上讲,catch块就像是带参数的方法定义,这些参数 匹配抛出的值得类型。 */ import java.util.Scanner; public class Quotient { public static int quotient(int number1,int number2){ if(number2==0) throw new ArithmeticException("Divisor cannot be zero"); return number1/number2; } public static void main(String[] args){ Scanner input=new Scanner(System.in); System.out.println("Enter two integers:"); int number1=input.nextInt(); int number2=input.nextInt(); try{ int result=quotient(number1,number2); System.out.println(number1+" / "+number2+" is "+(number1/number2)); } catch(ArithmeticException ex){ System.out.println("Exception:an integer cannot be divided by zero"); } System.out.println("Execution continues..."); } } /** 异常的一个优点:它能使方法抛出一个异常给它的调用者。这个调用者可以处理该异常。异常最根本的优势试讲检测错误由调用的 方法完成,处理错误由调用方法完成中分离出来。 */
Throwable类是所有异常类的根。所有的java异常类都直接或间接地继承自Throwable。
这些异常类可以分为三类:系统错误,异常和运行时异常。
1.系统错误,由java虚拟机抛出,用Erroe类表示,描述的是内部系统错误。这样的错误很少发生。如果发生,除了通知用户以及尽量稳妥的终止程序外,几乎什么也不能做。
2.异常,是由Exception类表示的,它描述的是由程序和外部环境所引起的错误,这些错误能够被程序捕获和处理。
3.运行时异常,是由RuntimeException类表示的,它描述的是程序设计错误。例如,错误的类型转换,访问一个越界数组或数值错误。由java虚拟机抛出。
Java的异常处理模型基于三种操作:声明一个异常,抛出一个异常,捕获一个异常。
1.声明异常。Java中,当前执行的语句必属于某个方法。Java解释器调用main方法开始执行一个程序。每个方法都必须声明它可能抛出的必检异常的类型。这称为声明异常。因为任何代码都可能发生系统错误和运行时错误。为了在方法中声明一个异常,就要在方法头中使用关键字throws。eg:
public void myMethod()throws IOException
关键字throws表示myMethod方法可能会抛出异常IOException。如果方法可能抛出多个异常,在throws后加一个用逗号分隔的异常列表。
2.抛出异常。检测一个错误的程序可以创建一个正确异常类型的实例并抛出它。这称为抛出一个异常。
IllegalArgumentException ex=new IllegalArgumentException(“Wrong Argument”);
throw ex;
等同于
throw new IllegalArgumentException(“Wrong Argument”);
3.捕获异常,如果在执行try块的过程中没有出现异常,则跳过catch字句。如果try块中的某条语句抛出一个异常,java会跳过try块中剩余的语句,然后开始查找处理这个异常代码的过程。处理这个异常的代码称为异常处理器。可以从当前的方法开始,沿着方法调用链,按照异常的反向传播方向找到哦这个处理器。
本文出自 “小止” 博客,请务必保留此出处http://10541556.blog.51cto.com/10531556/1880763
java异常