异常的处理
异常处理
异常的处理:try/catch
1.语法结构
try{
可能发生异常的代码
}catch(异常的类型1 异常名称){
捕获到该异常,处理的代码
(1)什么也不做
(2) 打印异常
(3)其他
}catch(异常的类型2 异常名称){
}
执行的特点;
(1)如果try\中的代码没有发生异常,那么久不会进入到catch中去,而是直接把程序运行完.
(2)如果try中的代码发生了异常
A:有catch可以捕获它,那么符合那个就进入到catch的那个异常的捕获是按顺序的,先捕获写在前面的异常
说明:多个catch有要求,必须小的类型先catch来捕获,大的类型后用catch捕获
B:所有的catch都没有捕获到异常,那么就将异常抛给上层调用者.
如果没有catch,当前方法结束,回到上级调用者 去处理.
做一个异常练习
从控制台输入两个数,做除法的异常处理
/** * */
package per.leiyustudy.throwable;
import java.util.Scanner;
import org.hamcrest.internal.ArrayIterator;
/** * @author 雷雨 * */
public class TestThrowType {
/** * @param args */
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner sca = new Scanner(System.in);
String a = sca.next();
String b = sca.next();
try {
int bei = Integer.parseInt(a);
int chu = Integer.parseInt(b);
System.out.println("被除数是"+bei);
System.out.println("除数是"+chu);
int shang = bei/chu;
System.out.println("商是"+shang);
} catch (NumberFormatException e) {
// TODO 自动生成的 catch 块
System.out.println("输入的数字类型不为整数");
}catch(ArithmeticException e) {
System.out.println("除数不能为0");
}catch(ArrayIndexOutOfBoundsException e) {
System.out.println("参数的个数少于两个");
}catch(Exception e) {
System.out.println("捕获了其他的所有异常");
}
}
}