您的位置:首页 > 编程语言 > Java开发

java自定义异常以及throws和throw的区别

2012-01-11 16:33 686 查看
t首先看一下throws和throw的区别:

throws是用来声明一个方法可能抛出的所有异常信息

throw则是指抛出的一个具体的异常类型。

通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的异常信息,而在方法(类)内部通过throw声明一个具体的异常信息。

throws通常不用显示的捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法;

throw则需要用户自己捕获相关的异常,而后在对其进行相关包装,最后在将包装后的异常信息抛出。

使用Java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常。用户自定义异常类,只需继承Exception类即可。
在程序中使用自定义异常类,大体可分为以下几个步骤。
(1)创建自定义异常类。
(2)在方法中通过throw关键字抛出异常对象。
(3)如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否则在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作。
(4)在出现异常方法的调用者中捕获并处理异常
例子程序:

package com.zcy.exception;

import java.util.*;

public class NewClass {

//用throws声明这个方法可能抛出的所有异常信息

static int avg(int number1, int number2) throws MyException {

if (number1 < 0 || number2 < 0) {

//用throw抛出一个具体的异常类型

throw new MyException("不可以使用负数");

}

if (number1 > 100 || number2 > 100) {

throw new MyException("数值太大了");

}

return (number1 + number2) / 2;

}

public static void main(String[] args) {

System.out.println("求2个数的平均数!" + "请输入两个数,要求是都小于100的数:");

Scanner in = new Scanner(System.in);

int number1 = in.nextInt();

int number2 = in.nextInt();

try {

int result = avg(number1, number2);

System.out.println(result);

} catch (MyException e) {

System.out.println(e);

}

System.out.println("是否继续执行。。。。");

/*

输出结果:

求2个数的平均数!请输入两个数,要求是都小于100的数:

200000

1

com.zcy.exception.MyException: 数值太大了

是否继续执行。。。。

*/

}

/*

public static void main(String[] args) throws MyException {

System.out.println("求2个数的平均数!" + "请输入两个数,要求是都小于100的数:");

Scanner in = new Scanner(System.in);

int number1 = in.nextInt();

int number2 = in.nextInt();

int result = avg(number1, number2);

System.out.println(result);

System.out.println("是否继续执行。。。。");

}

输入结果:

求2个数的平均数!请输入两个数,要求是都小于100的数:

200000

1

Exception in thread "main" com.zcy.exception.MyException: 数值太大了

at com.zcy.exception.NewClass.avg(NewClass.java:13)

at com.zcy.exception.NewClass.main(NewClass.java:36)

*/

}

//自定义一个异常类

class MyException extends Exception {

MyException(String ErrorMessage) {

super(ErrorMessage);

}

}

可以看出,当用try..catch捕获后,程序是还是可以继续往下执行的,而如果不适用的话,继续就会中断,抛出异常信息
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐