Java学习——43、异常处理措施

很多异常,比如除数为0这些,都可以在写程序时对其进行处理。

处理的方式大多用if语句,将有可能产生的异常排除。

但在设计程序的时候,有时候想得并不那么完备,可能会出现一些意想不到的异常,Java提供了异常处理机制来捕获和处理异常。

1、异常处理语句

Java提供try-catch-finnaly语句来捕获和处理一个或多个异常,其语法格式如下:

try{

         可能存在异常的语句;

}

catch(异常类异常对象){

         对异常对象进行处理的语句;

}

catch(异常类异常对象){

         对异常对象进行处理的语句;

         【可以有多个catch子句】

}

【finally{

         无论是否产生异常,均要执行的语句;此finally可省。

}

例:

本例仅为异常处理例题,无实际意义。

public class  Sample{

public static void main(String args[]) {

try {

int a[]= {1,2,3,4};

for(int i=0;i<5;i++)

System.out.println(a[i]);

int b=a[0]/0;

}

catch(ArrayIndexOutOfBoundsException e) {//下标越界异常

System.out.println("下标越界");

}

catch(ArithmeticException e) {//除数为0时,输出,因前已经有异常了,本catch并没有被执行,直接跳到finnaly子句了

System.out.println("除数为0");

}

catch(Exception e) {//捕获所有异常,由于本例中,只有两个异常,一个是下标越界,一个是除数为0,均已在以上代码中补捕获并处理,所以本catch子句不会被执行

System.out.println("有异常");

}

finally {

System.out.println("Welcome,张熹熹");

}

}

}

其运行结果如下:

1

2

3

4

下标越界

Welcome,张熹熹

注:一个异常对象只能被一个catch子句捕获,之后Java就不再进行匹配操作,并自动清除ex。

如果所有catch子句都没有捕获ex,则由Java虚拟机捕获并处理,会导致程序运行终止,就像没有用到try语句一样。

通常最后一个catch子句的异常类为Exception,能够捕获所有未被处理的异常,不会导致程序运行终止。

2、抛出异常

如果对象或者方法没有处理异常的能力,可以将异常抛出。

  • 抛出异常对象的throw语句

一个异常对象可由Java虚拟机抛出,也可由程序主动抛出。

用程序抛出异常对象的语法格式如下:

throw 异常对象

例:

public class Date extends Exception{

private int year,month,day;

public Date(int year,int month,int day) {

this.year=year;

try {

if(month<1||month>12)

throw new Exception("A");//抛出异常

if(day<1||day>31)

throw new Exception("B");//抛出异常

}

catch(Exception e){

//System.out.println(e.toString());

if(e.toString().equals("java.lang.Exception: A"))//处理异常                  System.out.println("月份错误!");

if(e.toString().equals("java.lang.Exception: B"))//处理异常

System.out.println("日期错误!");

}

finally

{

this.month=month;

this.day=day;

}

}

public String toString(){

returnyear+"年"+month+"月"+day+"日";

}

public static void main(String args[]) {

Date d=new Date(2018,15,8);

System.out.println(d.toString());

Date d1=new Date(2018,12,50);

System.out.println(d1.toString());

}

}

其运行结果如下:

月份错误!

2018年15月8日

日期错误!

2018年12月50日

(0)

相关推荐

  • 深入 Python 异常处理

    (给Python开发者加星标,提升Python技能) 来源:Python之王-小sen [导语]:本文结合例程总结Python异常处理的相关知识,帮你深入理解python异常处理. 在Python 中 ...

  • java学习——44、方法抛出的异常

    方法声明抛出异常的throws子句 如果一个方法产生异常,而该方法不想处理或不能处理该异常,则可以在方法声明时,采用throws子句声明该方法将抛出异常. 带有throws子句的方法声明的语法格式如下 ...

  • Java学习——42、错误和异常

    程序不是一写就能够运行的,总会出现这样那样的错误,要实现程序的功能,必须能够改错.Java会提示错误,大部分的错误根据提示进行修改即可.但也有一些错误,是程序所修改不了的. 本文主要介绍可以代码中可以 ...

  • Java异常处理(异常基本概念)

    一:异常的基本概念 当我们的程序在运行中出现了不合理的地方则会出现异常,异 常就是终止程序运行的指令,当一行代码出现异常之后,那么后面的代码就不再继续执行,如果要让后面的代码继续需要将异常处理,异常处 ...

  • Java学习-注解和反射

    注解 java.Annotation Annotation的作用:可以呗其他程序读取 Annotation的格式 注解是:@注释名 在代码中存在,还可以添加一些参数 ​@SuppressWarning ...

  • Java学习-多线程

    多线程 任务(Task).进程(Process).线程(Thread) 进程的创建 1.继承Thread类 自定义线程类继承Thread类 重写run()方法,编写线程执行体 创建线程对象,调用sta ...

  • Java学习-Mybatis

    Mybatis Maven依赖: <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependenc ...

  • Java 学习笔记

    您对计算机(电脑)有了解吗? 计算机组成 系统软件 直接和硬件交互的软件叫系统软件,例如 win7.win8.Linux.mac等操作系统 应用软件 通常在运行在系统软件上,也就是在系统软件上开发的软 ...

  • Java学习-126.2048代码

    本篇帖的是按钮的代码. 因为按钮比较多,包括菜单项的动作,为了区分,我用了两个内部类来实现这两部分代码. //本类是Game_2048类的内部类,用来实现上.下.左.右四个按钮,以及重新开始和退出游戏 ...

  • Java学习—125.2048代码

    本篇帖的是部分动作代码. 每个方法前都有注释说明本方法的功能. //随机选取一个位置,并填入数字2.如果此位置中已有数字,那么换一个位置. public void rule(){ x=ran.next ...