当前位置:文档之家› 实验9自定义异常的使用

实验9自定义异常的使用

实验9自定义异常的使用
实验9自定义异常的使用

1)在定义一个银行类Bank 时, 有deposit、withdraw 、showBalance 等方法。若取钱数大于余额则作为异常处理(In SuffiCie ntFu ndsExceptio n)。产生异常的条件是余额少于取额,因此是否抛出异常要判断条件,要定义好自己的异常类。package

ex91;

public class Bank {

public double total=0;

Bank(double d) {

total=d;

public void deposit(double d) {

total+=d; }

public void withdraw(double d) {

total—=d;

}

public void showBalance(){

System.out.println(total);

}

package ex91;

public class BankException extends Exception {

String message;

BankException(double d)

{ message=d+"非法取款余额”;

public String getMessage() {

return message;

}

}

package ex91;

import java.util.Scanner;

public class BankTest {

/** * @param args */

public static void main(String[] args) throws BankException { // TODO Auto-generated method stub

Bank bk=new Bank(1236。123);

bk。showBalance();

Scanner sc = new Scanner(System.in);

int i=sc.nextInt();

bk.withdraw(i);

if(bk.total<0){

BankException be=new BankException(i); throw(be);

}

else bk.showBalance();

}

( 2)定义 Triangle 类用于表示三角形,其任意两个边的和必须大于第三条边。定义IllegalTriangleException 用于声明任何违反以上规则的输入. Triangle 类的构造方法如下:

public Triangle(double side1, double side2, double side3) throws IllegalTriangleException {

// Implement it

}

package ex92;

import java。io.IOException;

class IllegalTriangleException extends Exception {

// private static final long serialVersionUID = 1L;

package ex92;

import java.io。IOException;

public class Test {

public static void main(String[] args) throws IOException { Triangle t1;

try {

t1 = new Triangle(3, 1, 2);

} catch (IllegalTriangleException e) { e.printStackTrace();

SyStem.out。println(”不合法的三角形”); return;

}

SyStem.out。println(”Side1=” + t1。Side1 + ”,Side2=” + t1。Side2 + ",Side3=" + t1.Side3);

}

}package ex92;

claSS Triangle {

double Side1;

double Side2;

double Side3;

public Triangle(double Side1, double Side2, double Side3) throwS IllegalTriangleException {

Super();

if (Side1 + Side2 〈= Side3 || Side1 + Side3 <= Side2 || Side2 +

Side3 〈= Side1)

throw new IllegalTriangleException();

}

this.side1 = side1;

this.side2 = side2;

this.side3 = side3;

( 3)要求声明定义 2 个异常类: NoLetterException 类和 NoDigitException 类。再定义一个 People 类,该类中的 void printLetter(char c) throws 方法抛出NOLetterEXCePtiOn 异常,VOid PrintDigit(char C)方法抛出 NODigitEXCePtiOn 异常。主类 ExceptionExample 对 2 个方法分别测试。

PaCkage eX93;

PubliC Class EXCePtiOnEXamPle {

PubliC statiC VOid main (String args[ ]){

PeOPle PeOPle=new PeOPle( );

fOr(int i=0;i<128;i++) {

try{

PeOPIe.printLetter((char)i); //调用 PeOPIe对象的

PrintLetter 方法并

处理异常

catch(NOLetterEXcePtiOn e){

SyStem。out.println(”发生异常:”+e。getMessage());

e。Print();

fOr(int i=0;i<128;i++) {

try{

people.printDigit((char)i); // 调用 people对象的

PrinDigit 方法并处

理异常

}

catch(NODigitEXcePtiOn e){

SyStem。out.println(”发生异常:"+e.getMessage());

}

Package eX93;

class NODigitEXcePtiOn eXtends EXcePtiOn{

Public char Print(){

return '*’;

Package eX93;

imPOrt jaVa.iO。IOEXcePtiOn;

class NoLetterException extends Exception{

public char print(){

return '#';

}

package ex93;

class People{

public void printLetter(char c)throws NoLetterException{ if(c〉=’a'&&c〈=’z'){

throw new NoLetterException();

else

SyStem.out.pri ntln ("请输出该字符:”+c);

public void printDigit (char c)

throwS NoDigitException{

if(c〉=’0’&&c〈=’9'){

throw new NoDigitException();

}

elSe

SyStem。out。pri ntln (”请输出该字符:”+c);

(4)CircleArea 类是一个命令行输入的计算器,用于计算圆的面积,程序从命令行接收半径. 如果命令行输入的是非数字,则程序抛出异常, 显示消息通知用户必须输入数字。 e 类用于表示三角形,其任意两个边的和必须大于第三条边。定义IllegalTriangleException 用于声明任何违反以上规则的输入。 Triangle 类的构造方法如下:

public Triangle(double Side1, double Side2, double Side3) throwS IllegalTriangleException {

// Implement it

package ex94;

import java.io.BufferedReader;

import java.io.InputStreamReader;

public claSS TeStCircle {

public Static void main(String[] argS){

while(true) {

SyStem.out。println("PleaSe enter a radiuS of the ci rcle: ”);

try{

BufferedReader br = new BufferedReader(new

InputStreamReader(SyStem。in));

double radiuS = Double。valueOf(br.readLine()。trim());

System。out。println(”Your enter the radius is:” +

radius); double area = Math。PI * radius * radius;

System.out。println(”The circle area is: ” + area); break;

}catch(Exception e) {

the

System.out。println("Your input is not number,Please enter the correct radius!");

}

}

相关主题
文本预览
相关文档 最新文档