本篇介绍Java的异常处理机制:
1.try..catch..finally[可选]异常捕获处理。
2.throws:用在方法声明后面,表示再抛出异常,由该方法的调用者来处理。调用者要申明抛出异常或者捕获,不然编译报错。
3.throw:用在方法体内,可以不申明或不捕获,编译器不会报错。具体向外抛异常的是一个异常实例。但调用者需要捕获处理一下。
package com.example.javatest;
/**
* Author:W
* 异常处理
* 1.throws:用在方法声明后面,表示再抛出异常,由该方法的调用者来处理。调用者要申明抛出异常或者捕获,不然编译报错。
* 2.throw:用在方法体内,可以不申明或不捕获,编译器不会报错。具体向外抛异常的是一个异常实例。
* 3.try..catch..finally[可选]异常捕获处理
*/
public class MainTest {
public static void main(String[] args)
{
System.out.println("===try..catch..finally===");
try
{
int[] arr = new int[2];
System.out.println("访问数组索引3的元素 :" + arr[3]);
}catch (Exception e)
{
System.out.println("发生异常Error="+e.toString());
}finally {
System.out.println("一定执行的语句块");
}
System.out.println("===函数头抛出异常,调用者必须继续上抛或者捕获处理===");
try {
method(2,0);
}catch(ArithmeticException e)
{
System.out.println("发生异常2 Error="+e.toString());
}
System.out.println("===函数内抛出异常,调用者不一定需要继续上抛或者捕获处理===");
method2(5,0);
}
//函数头声明抛出的异常
public static void method(int a,int b) throws ArithmeticException
{
int c = a/b;
}
//函数内抛出异常对象(调用者不一定需要上抛或者捕获)
public static float method2(int a,int b)
{
float c = 0;
if (b==0)
{
throw new ArithmeticException();
}else
{
c = (float) a/b;
}
return c;
}
}
运行结果如下: