异常(实际使用直接try-catch)

1.常见系统异常

异常

异常的解释

ClassNotFoundException

未找到要装载的类

ArrayIndexOutOfBoundsException

数组访问越界

FileNotFoundException

文件找不到

IOException

输入、输出错误

NullPointerException

空指针访问

ArithmeticException

算术运算错误,如除数为0

NumberFormatException

数字格式错误

InterruptedException

中断异常。

2.自定义异常

(1)定义异常类—继承Exception类

(2)在方法内抛出异常

throw new 异常类();

(3)声明方法存在异常

在方法头的尾部加上:throws 异常类列表

3.实战

1.假设学校开设舞蹈课程,输入男生、女生的数量,如果男生或女生的数量为0,则舞蹈课程无法开设,如果不为0,则根据男生/女生人数的多少计算男生/女生的partner数量。请用异常类处理数量为0的情况,重新编写下面的代码。

要求运行结果如下:

主函数

public class DancerLesson {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
try{
System.out.println("Enter number of male dancers:");
int men=input.nextInt();
System.out.println("Enter number of female dancers:");
int women=input.nextInt();
if(men==0||women==0)
throw new myExcpetion(men,women);
else
{
if(men>=women)
System.out.println("Each woman must dance with"+men/(double)women+"men.");
else
System.out.println("Each man must dance with"+women/(double)men+"women.");
System.out.println("Begin the lesson");
}
}catch(myExcpetion e) {
System.out.println(e);
}
}
}

异常类

public class myExcpetion extends Exception {
public String tostring() {
return "人数错误";
} public myExcpetion(int men,int women) {
System.out.print("Lesson is canceled.");
if(men==0&&women==0)
System.out.println("No student");
else if(men>0&&women==0)
System.out.println("No men");
else
System.out.println("No women");

结果

2.要求声明定义两个Exception的异常子类:NoLowerLetter类和NoDigit类

再声明一个People类,该类中的void printLetter(char c)方法抛出NoLowerLetter异常类对象,void

printDigit(char c)方法抛出NoDigit异常类对象。请补充下列代码中【代码1】到【代码6】

//ExceptionExample.java
public class NoLowerLetter // 类声明,声明一个Exception的子类NoLowerLetter
{
public void print() {
System.out.printf("%c",'#');
}
}
public class NoDigit extends Exception // 类声明,声明一个Exception的子类NoDigit
{
public void print() {
System.out.printf("%c",'*');
}
}
class People {
void printLetter(char c) throws NoLowerLetter {
if(c<'a'||c>'z') {
NoLowerLetter noLowerLetter= new NoLowerLetter(); // 创建NoLowerLetter类型对象
throw noLowerLetter; // 抛出noLowerLetter
}
else {
System.out.print(c);
}
}
void printDigit(char c) throws NoDigit {
if(c<'1'||c>'9') {
NoDigit noDigit= new NoDigit(); // 创建NoDigit()类型对象
throw noDigit; // 抛出noDigit
}
else {
System.out.print(c);
}
}
}
public class ExceptionExample {
public static void main (String args[ ]){
People people=new People( );
for(int i=0;i<128;i++) {
try
{
people.printLetter((char)i);
}
catch(NoLowerLetter e)
{
e.print();
}
}
for(int i=0;i<128;i++) {
try
{
people.printDigit((char)i);
}
catch(NoDigit e)
{
e.print( );
}
}
}
}

3.选择题

1)设有如下代码:

 try {
tryThis();
return;
} catch (IOException x1) {
System.out.println("exception 1");
return;
} catch (Exception x2) {
System.out.println("exception 2");
return;
} finally {
System.out.println("finally");
}

如果tryThis() 抛出 NumberFormatException,则输出结果是? (C)

A. 无输出

B. "exception 1", 后跟 "finally"

C. "exception 2", 后跟 "finally"

D. "exception 1"

E. "exception 2"

2)设有如下方法:

public void test() {
try { oneMethod();
System.out.println("condition 1");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("condition 2");
} catch(Exception e) {
System.out.println("condition 3");
} finally {
System.out.println("finally");
}
}

如果oneMethod正常运行,则输出结果中有哪些?(AD)

A. condition 1

B. condition 2

C. condition 3

D. finally

3) 设有如下代码:

public void fun () {
int i;
try
{
i=System.in.read ();
System.out.println("Location 1");
} catch (IOException e) {
System.out.println("Location 2");
} finally {
System.out.println("Location 3");
}
System.out.println("Location 4");
}

如果有一个IOException发生, 则输出有哪些?    (BCD)

A. Location 1

B. Location 2

C. Location 3

D. Location 4

4)  设有如下代码:

1 String s = null
2 if ( s != null & s.length() > 0)
3 System.out.println("s != null & s.length() > 0"); 4 if ( s != null && s.length() > 0)
5 System.out.println("s != null & s.length() > 0"); 6 if ( s != null || s.length() > 0)
7 System.out.println("s != null & s.length() > 0"); 8 if ( s != null | s.length() > 0)
9 System.out.println("s != null | s.length() > 0");

以下行中哪些会产生空指针异常。                (D)

A. 2,4

B. 6,8

C. 2,4,6,8

D. 2,6,8

5) 类Test1、Test2定义如下:

1.public class  Test1 {
2. public float aMethod(float a,float b) throws IOException {
3. }
4. }
5. public class Test2 extends Test1{
6.
7.

将以下哪种方法插入行6是不合法的。              (A)

A、float  aMethod(float  a,float  b){ }

B、public  int  aMethod(int a,int b)throws  Exception{ }

C、public  float  aMethod(float  p,float q){ }

D、public  int  aMethod(int a,int  b)throws IOException{ }

java 实验4 异常的更多相关文章

  1. Java实验链接

    第1次实验 课堂实验内容:Java入门+Eclipse+PTA+Git+博客 实验任务书:第01次试验(安装JDK.编辑器.编写出第一个Java程序).pdf Eclipse简明教程(by郑如滨).p ...

  2. 20175212童皓桢 Java实验二-面向对象程序设计实验报告

    20175212童皓桢 Java实验二-面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设 ...

  3. 20165310 Java实验五《网络编程与安全》

    20165310 Java实验五<网络编程与安全> 任务一 题目:①编写MyBC.java实现中缀表达式转后缀表达式的功能:②编写MyDC.java实现从上面功能中获取的表达式中实现后缀表 ...

  4. Java实验报告&&课程报告

    Java实验报告 班级 计算机科学与技术二班 学号 20188450 姓名 李代传 完成时间 2019/9/19 评分等级 实验二 Java简单类与对象 实验目的 掌握类的定义,熟悉属性.构造函数.方 ...

  5. 第二次Java实验报告

    Java实验报告 班级 计科二班 学号 20188437 姓名 何磊 完成时间 2019/9/12 评分等级 实验二 Java简单类与对象 实验目的 掌握类的定义,熟悉属性.构造函数.方法的作用,掌握 ...

  6. 第七次java实验报告

    Java实验报告 班级 计科二班 学号20188437 姓名 何磊 完成时间 2019/10/25 评分等级 实验四 类的继承 实验内容 )总票数1000张:(2)10个窗口同时开始卖票:(3)卖票过 ...

  7. 第六次java实验报告

    Java实验报告 班级 计科二班 学号20188437 姓名 何磊 完成时间 2019/10/17 评分等级 实验四 类的继承 实验目的 理解异常的基本概念: 掌握异常处理方法及熟悉常见异常的捕获方法 ...

  8. 第九周Java实验作业

    实验九 异常.断言与日志 实验时间 2018-10-25 1.实验目的与要求 (1) 掌握java异常处理技术: Java的异常处理机制可以控制程序从错误产生的位置转移到能够进行错误处理的位置. Ja ...

  9. Core Java 总结(异常类问题)

    所有代码均在本地编译运行测试,环境为 Windows7 32位机器 + eclipse Mars.2 Release (4.5.2) 2016-10-17 整理 下面的代码输出结果是多少?为什么?并由 ...

随机推荐

  1. 带参数setTimeout

    /*         功能:修改 window.setTimeout,使之可以传递参数和对象参数         使用方法: window.setTimeout(回调函数,时间,参数1,,参数n)   ...

  2. Lua加密

    两种方式:一种用luac,一种用luajit luac加密: 1.lua本身可以使用luac将脚本编译为字节码(bytecode)从而实现加密,去官网下载Lua源代码包(http://www.lua. ...

  3. 【332】Machine Learning

    Reference: 决策树方法-对买电脑进行分类预测 Reference: 最邻近规则分类(K-Nearest Neighbor)KNN算法应用 Reference: python 内建函数 str ...

  4. Python setattr() 函数

    Python setattr() 函数  Python 内置函数 描述 setattr() 函数对应函数 getattr(),用于设置属性值,该属性不一定是存在的. 语法 setattr() 语法: ...

  5. Linux汇编与C互相调用

    一.简介 C语言调用汇编有两种方式:1.通过内嵌汇编  2.通过编译链接. 二.基础知识 对于C和汇编语言的接口主要有两个问题需要解决 1.调用者与被调用者的参数传递 正常的,定义一个函数总是希望它完 ...

  6. Java 设计模式系列(五)原型模式

    Java 设计模式系列(五)原型模式 原型模式属于对象的创建模式.通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象.这就是选型模式的用意. 一.原型模 ...

  7. 模板模式c#(非常简单,但又非常简洁好玩)

    using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace 模板模式{   ...

  8. Java程序设计8——抽象类、接口与内部类

    1 抽象类 当编写一个类时,常常会为该类定义一些方法,这些方法用以描述该类的行为方式,那么这些方法都有具体的方法体.但在某些情况下,某个父类并不需要实现,因为它只需要当做一个模板,而具体的实现,可以由 ...

  9. 自动化ui 保存max场景信息 结构化处理比较好用

    struct gt_cl_hp_saveMaxinfo ( pathpp ="" , fn savemaxinfor =( DialogMonitorOPS.unRegisterN ...

  10. 2014 ACM/ICPC 鞍山赛区网络赛(清华命题)

    为迎接10月17号清华命题的鞍山现场赛 杭电上的题目 Biconnected(hdu4997)     状态压缩DP Rotate(hdu4998)    相对任一点的旋转 Overt(hdu4999 ...