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下如下又有几种异常
使用方法:
如此还可以多个catch一起用。多个catch时按照先细后大的顺序排列,比如先是子类们,最后是Exception这个最大的类。
throw throws
throws用于声明,比如
表示该函数会抛出BookNotExistException这个异常,也可以不用函数,直接用C++那种方法,在try内直接抛出,但不同的是自己定义的异常抛出时需要关键字new,新建一个object。
自己定义时只需要继承自Exception这个父类就可以,类内可以什么都不用,或者是两个构造函数,如下
作业
代码
在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;
}
}
}
}
}
相关文章推荐
- 工厂设计模式
- 配置JDK环境变量
- introduction to Java Programming 编程题5.3<回文整数>
- introduction to Java Programming 编程题5.4<反向显示一个整数>
- Introduction to Java Programming 编程题5.5<对三个数排序>
- Spring 学习笔记(四)——数据访问与事务
- JAVA反射机制练习题
- java基金会成立
- java对象赋值操作
- Mybatis+Spring3
- java特种兵 学习日志1
- java web程序中报错原因总结
- SpringMVC与mysql进行登录验证
- Java-高效地使用Exception-实践
- SpringMVC+Mybatis集成开发,环境搭建。
- 从java String API中获取的礼物
- JAVA正则表达式 Pattern和Matcher
- Java的版本历史与特性
- java join使用原理
- 4、restlet 2.3 用户指南(四) spring