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

Java学习--(九)异常处理

2015-08-16 15:24 423 查看
关键字try…catch…catch…finally…(finally执行catch错误后要执行的代码)。

在java语言中,错误类的基类是java.lang.Error,异常类的基类是java.lang.Exception。 两者的父类都是java.lang.Throwable。一般Error类都是程序本身无法修复的错误,而Exception则可以通过异常处理来处理。Exception下如下又有几种异常



使用方法:

try{
System.out.println("输入整数:");
Scanner in=new Scanner(System.in);
int num=in.nextInt();//输入字符串就会被catch

}
catch(InputMissmatchException e){
System.out.println("输入整数!");
}
//finally{
//  @TODO
//}


如此还可以多个catch一起用。多个catch时按照先细后大的顺序排列,比如先是子类们,最后是Exception这个最大的类。

throw throws

throws用于声明,比如

public static void BNEE() throws BookNotExistException{
System.out.println("请重新输入");
throw new BookNotExistException();
}


表示该函数会抛出BookNotExistException这个异常,也可以不用函数,直接用C++那种方法,在try内直接抛出,但不同的是自己定义的异常抛出时需要关键字new,新建一个object。

自己定义时只需要继承自Exception这个父类就可以,类内可以什么都不用,或者是两个构造函数,如下

class BookNotExistException extends Exception{
BookNotExistException(){}
BookNotExistException(String s){
super(s);
}
}


作业





代码

package com.kaihong;

import java.util.InputMismatchException;
import java.util.Scanner;

class BookNotExistException extends Exception{ BookNotExistException(){} BookNotExistException(String s){ super(s); } }

public class BookSystem {

public static void BNEE() throws BookNotExistException{ System.out.println("请重新输入"); throw new BookNotExistException(); }public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
String[] books=new String[]{"math","大英","大物"};
int op,num;
while(true){
System.out.println("请输入命令:1-按序号查找;2-按书名查找");
try{
op=in.nextInt();
}
catch(InputMismatchException e){
System.out.println("命令输入错误,请输入正确指令");
continue;
}
if(op==1){
System.out.println("请输入序号");
try{
num=in.nextInt();
if(num>3)
BNEE();
System.out.println("book:"+books[num-1]);
}
catch(InputMismatchException e){
System.out.println("命令输入错误,请输入正确指令");
continue;
}
catch(BookNotExistException e){
System.out.println("图书不存在");
continue;
}
}
if(op==2){
System.out.println("请输入书名:");
try{
String str=in.next();
int flag=0;
for(int i=0;i<3;i++){
if(str.equals(books[i]))
{
System.out.println("books:"+books[i]);
flag=1;
break;
}
}
if(flag==0){
BNEE();
}
}
catch(InputMismatchException e){
System.out.println("命令输入错误,请输入正确指令");
continue;
}
catch(BookNotExistException e){
System.out.println("图书不存在");
continue;
}
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: