博学谷——让IT教学更简单,让IT学习更有效
二、案例实现
public class Example18 { }
public static void main(String[] args) { }
public static int div(int x, int y) throws Exception { }
// 如果除数传递了0进来,这个程序就出现了异常 if (y == 0) { }
return x / y;
// 发生异常自己不处理,谁调用谁处理 // 需要在方法上进行抛出: throws 异常类 throw new Exception();
System.out.println(\除法运算开始\try {
div(1, 0);
} catch (Exception e) { }
System.out.println(\除法运算结束\
System.out.println(\处理运算异常\
运行结果如图4-18所示。
图4-18 运行结果
三、案例总结
1、throws关键字声明抛出异常的语法格式如下:
修饰符 返回值类型 方法名([参数1,参数2.....])throws ExceptionType1[,ExceptionType2.....]{ }
2、throws关键字需要写在方法声明的后面,throws后面需要声明方法中发生异常的类型,通常将这种做法称为方法声明抛出一个异常。
26
博学谷——让IT教学更简单,让IT学习更有效
案例4-19 自定义异常 一、案例描述
1、 考核知识点
编 号:00104015 名 称:自定义异常 2、 练习目标
? 掌握如何自定义异常
3、 需求分析
Java中定义的异常有限,如果想描述程序中特有的异常情况,就需要自定义异常。为了让初学者熟悉自定义异常,本案例将自定义一个名为MyException的异常类来演示如何自定义异常。 4、 设计思路(实现原理)
1)自定义名为MyException的异常类,继承自Exception类。
2)在Example19类中进行除法运算,判断当除数为零时,抛出自定义的异常类 3)在main()方法中处理异常。
二、案例实现
1、编写自定义异常类,代码如下:
class MyException extends Exception { }
private int number;
MyException(String message) { }
MyException(String message, int number) { }
public int getNumber() { }
return number; super(message); this.number = number; super(message);
2、抛出异常和处理异常,代码如下:
public class Example19 {
public static void main(String[] args) {
try {
divide(20, 0);
} catch (MyException my) { }
27
System.out.println(\你给的除数是:\而我们要求是:\
+ my.getMessage());
博学谷——让IT教学更简单,让IT学习更有效
}
}
public static int divide(int a, int b) throws MyException { }
if (b = 0) { }
throw new MyException(\除数不能为零\return a / b; } else {
运行结果如图4-19所示。
图4-19 运行结果
三、案例总结
1、在Java中允许用户自定义异常,但自定义的异常类必须继承自Exception或其子类。 2、throw关键字用于在方法中声明抛出异常的实例对象,其语法格式如下:
throw Exception异常对象
3、main()方法中,定义了一个try…catch语句用于捕获divide()方法抛出的异常。在调用divide()方法时由于传入的被除数不能为零,程序会抛出一个自定义异常MyException,该异常被捕获后最终被catch代码块处理,并打印出异常信息。
案例4-20 import引入指定类 一、案例描述
1、 考核知识点
编 号:00104017 名 称:import语句
2、 练习目标
? 掌握如何使用import引入指定类
3、 需求分析
不同包下的类互相调用时,一般会使用import关键字引入包。为了方便初学者的学习,本案例将演示如何使用import引入指定类。
4、 设计思路(实现原理)
1) 在D:\\samplePackage\\chapter04 文件夹下新建Student.java文件
2) 打开文件编写Student类,类中定义int类型的变量sid,String类型的变量name和double类型的
变量score,分别表示学生id,学生姓名和分数。
2)Student类定义构造器及一个evaluation()方法,该方法用于评定学生是否为三好学生,得分大于90
28
博学谷——让IT教学更简单,让IT学习更有效
分为三好学生,否则为普通学生。Student类编译后位于cn.itcast.domain包下。
3)在D:\\samplePackage\\chapter04 文件夹下新建Example20.java文件,打开文件编写Example20类,在main方法中使用有参构造创建Student类的对象并调用evaluation()方法
4)Example20类编译后位于cn.itcast.example包下,在类中使用import cn.itcast.domain.Student;引入Student类。
二、案例实现
1、编写Student类,该类位于cn.itcast.domain包下,代码如下所示:
package cn.itcast.domain; public class Student { }
private int sid; private String name; private double score; public Student() {}
public Student(int sid, String name, double score) { }
public int getSid() { }
public String getName() { }
public double getScore() { }
//评定是否是三好学生
public String evaluation() { }
if (getScore() > 90) { }
return \普通学生\
return \三好学生\return score; return name; return sid; this.sid = sid; this.name = name; this.score = score;
2、编写Example20类,该类位于cn.itcast.example包下,代码如下所示:
package cn.itcast.example; import cn.itcast.domain.Student; public class Example20 {
public static void main(String[] args) {
int sid = 18;
29
博学谷——让IT教学更简单,让IT学习更有效
}
}
String name = \马化腾\double score = 99.2;
Student stu = new Student(sid, name, score);
System.out.println(stu.getName()+\当选\
运行结果如图4-20所示。
图4-20 运行结果
三、案例总结
1、当处于不同包下的类互相调用时,需要使用被调用类的完整类名,即包名加上类名。为了简化代码,Java中提供了import关键字,用于引入某个指定包下的类。 2、import通常出现在package语句之后,类定义之前。
3、当需要引入同一包下的多个类时,可以使用“import包名.*;”的方式,引入包下所有的类。
30